Как получить данные из базы данных без изменений в данных? - PullRequest
0 голосов
/ 02 марта 2019

// Это MainActivity, я использовал firebase для хранения примеров данных, где я могу обновлять и извлекать.Но поиск данных возможен только при изменении данных, но я хочу увидеть мои данные, которые уже находятся в базе данных вот структура базы данных ] 1

public class MainActivity extends 
 AppCompatActivity {
EditText name,weight;
Button uploadBtn;
TextView itemName,itemWeight;
DatabaseReference databaseReference=FirebaseDatabase.getInstance().getReference();
Map<String,String>values=new HashMap<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    name=findViewById(R.id.inputItemName);
    weight=findViewById(R.id.inputItemWeight);
    uploadBtn=findViewById(R.id.uploadButton);
    itemName=findViewById(R.id.resultName);
    itemWeight=findViewById(R.id.resultWeight);

// Здесь, как вы можете видеть, я использовал ValueEventListener для отображения извлечения значений из базы данных перед загрузкой новых значений. Но это не работает, если только значения данных не изменены (то есть работает только после загрузки).новые ценности).

 ValueEventListener valueEventListener=new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            String nameD=(String) dataSnapshot.child("Name").getValue();
            String weightD = (String) dataSnapshot.child("Weight").getValue();
            itemName.setText(nameD);
            itemWeight.setText(weightD+" Kg");
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    };
    databaseReference.addListenerForSingleValueEvent(valueEventListener);
    uploadBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            values.put("Name",name.getText().toString());
            values.put("Weight",weight.getText().toString());
            databaseReference.child("UToouch").setValue(values);

        }
    });

    databaseReference.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

        }

        @Override
        public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
                 String nameDb=(String) dataSnapshot.child("Name").getValue();
                 String weightDb = (String) dataSnapshot.child("Weight").getValue();
                 itemName.setText(nameDb);
                 itemWeight.setText(weightDb+" Kg");
        }

        @Override
        public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {

        }

        @Override
        public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });
}

}

1 Ответ

0 голосов
/ 02 марта 2019

Чтобы получить значения ваших свойств Name и Weight, используйте следующий код:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference ref = rootRef.child("UToouch");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        String name = dataSnapshot.child("Name").getValue(String.class);
        String weight = dataSnapshot.child("Weight").getValue(String.class);
        Log.d(TAG, name + " / " + weight);
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
    }
};
ref.addListenerForSingleValueEvent(valueEventListener);

Выходные данные в вашем logcat будут:

rittesh / pv
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...