有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java Android从Firebase检索按键数据

我目前正在做一些事情,我应该能够从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, 安卓.R.layout.simple_list_item_1, list);
            listView.setAdapter(arrayAdapter);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}

共 (1) 个答案

  1. # 1 楼答案

    之所以会发生这种情况,是因为在for循环的每次迭代中,您都将这些值dttimeinfoTopic设置为相应的文本视图。因此,最终只有一个元素,最后一个元素设置为TextView。要解决这个问题,您必须做出选择,一个是append文本viws的值,或者更优雅的方式是使用ListViewRecyclerView和适配器This是您如何从Firebase实时数据库检索数据,并使用和ArrayAdapter将其显示在ListView中,this是您如何使用FirebaseRecyclerAdapter检索数据并将其显示在RecyclerView