Получение данных из базы данных Firebase в реальном времени в ListView - PullRequest
0 голосов
/ 04 января 2019

У меня проблема с сохранением данных в ListView из базы данных на Firebase , я использую метод ниже, он запускается при нажатии на кнопку, вот метод, который я использую

private void retrieveMyDataMethod(){
    databaseReference = FirebaseDatabase.getInstance().getReference();

    databaseReference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

            String name = dataSnapshot.child(uid).child("name").getValue(String.class);
            String address = dataSnapshot.child(uid).child("address").getValue(String.class);

            String[] data = new String[]{
                    name, address
            };

            List<String> data_list = new ArrayList<String>(Arrays.asList(data));

            ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, data_list);

            listViewRe.setAdapter(arrayAdapter);

        }

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

        }
    });
}

1 Ответ

0 голосов
/ 04 января 2019

Чтобы решить эту проблему, используйте следующие строки кода:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
Query query = rootRef.orderByChild("name");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        ArrayList<String> list = new ArrayList<>();
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String name = ds.child("name").getValue(String.class);
            list.add(name);
        }
        ListView listView = (ListView) findViewById(R.id.list_view);
        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(getApplicationContext(), android.R.layout.simple_list_item_1, list);
        listView.setAdapter(arrayAdapter);
    }

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

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

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