Java Android检索从Firebase推送的密钥数据

时间:2018-05-26 06:17:01

标签: java android firebase firebase-realtime-database

我目前正在开展一些工作,我可以从Firebase中获取推送密钥的子项。它应该检索子记录,例如:

  • 日期
  • 主题
  • 更多信息

每次保存条目时,也可以在应用程序中查看。 firebase树如下:

enter image description here

保存的条目 - 推送键截图如下:

enter image description here

单击它时,用户可以查看它。

enter image description here

问题是,无论何时单击id,它只会收到最后一个条目,但不会接收已存在于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 :(得分:0)

这种情况正在发生,因为您在for循环的每次迭代中将这些值dttimeinfoTopic设置为相应的文本视图。所以你最终得到一个元素,最后一个元素设置为TextView。要解决这个问题,你必须做出选择,一个是 append 那些对文本viws或更优雅方式的价值,就是使用ListView或{ {1}}和适配器。 This 是您如何从Firebase实时数据库中检索数据并使用RecyclerView this <ListViewArrayAdapter中显示的数据/ strong>是您如何使用RecyclerView检索数据并在FirebaseRecyclerAdapter中显示数据。