Java Android извлекает данные нажатых клавиш из Firebase - PullRequest
0 голосов
/ 26 мая 2018

В настоящее время я работаю над чем-то, в чем я должен быть в состоянии получить детей нажатой клавиши из Firebase.Он должен получить дочернюю запись, такую ​​как:

  • Дата
  • Тема
  • Дополнительная информация

Каждый раз, когда я сохраняю запись, это также можно посмотреть в приложении.Ниже приведено дерево базы:

введите описание изображения здесь

Сохраненный снимок экрана с нажатой клавишей ввода представлен ниже:

введите описание изображенияздесь

Когда вы нажимаете на него, пользователь видит его так.

введите описание изображения здесь

Проблема в том, чтовсякий раз, когда по идентификатору щелкают, он просто получает последнюю запись, но не остальные, которые уже есть в Firebase.

Мой код указан ниже:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
    mFirebasedatabase=FirebaseDatabase.getInstance().getReference().child("user").child(uid).child("dailyDiary");
    id = mFirebasedatabase.getKey();
    firebaseAuth = FirebaseAuth.getInstance();
    user = FirebaseAuth.getInstance().getCurrentUser();

    mFirebasedatabase.child(id).addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            List<String> list = new ArrayList<>();
            for  (DataSnapshot datasnap:dataSnapshot.getChildren()) {

                UserDiary userDiary = datasnap.getValue(UserDiary.class);
                String date = userDiary.getDate_time();
                String info = userDiary.getMoreInfo();
                String topic = userDiary.getTopic();
                Log.d("TAG", date + " / " +  topic +  " / " + info);
                list.add(date + topic + info);
            }
            ListView listView = (ListView) findViewById(R.id.list_diary);
            ArrayAdapter arrayAdapter = new ArrayAdapter<String>(HomeThreeViewDiary.this, android.R.layout.simple_list_item_1, list);
            listView.setAdapter(arrayAdapter);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}

1 Ответ

0 голосов
/ 26 мая 2018

Это происходит потому, что вы устанавливаете эти значения dttime, info и Topic для соответствующих текстовых представлений на каждой итерации цикла for.Таким образом, в итоге у вас есть один элемент, последний элемент которого установлен на TextView.Чтобы решить эту проблему, вам нужно выбрать один из вариантов: добавить те значения к тексту viws или более элегантный способ - использовать ListView или * 1010.* и адаптер. Этот позволяет извлекать данные из базы данных Firebase Realtime и отображать их в ListView, используя ArrayAdapter и , это как вы можете извлечь данные и отобразить их в RecyclerView, используя FirebaseRecyclerAdapter.

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