Java Android从Firebase检索按键数据
我目前正在做一些事情,我应该能够从Firebase中获取按键的子项。它应该检索子记录,例如:
- 日期
- 话题
- 更多信息
每次保存条目时,也可以在应用程序中查看该条目。firebase树如下所示:
保存的输入-按键屏幕截图如下:
当您单击它时,这就是用户查看它的方式
问题是,每当单击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 楼答案
之所以会发生这种情况,是因为在for循环的每次迭代中,您都将这些值
dttime
、info
和Topic
设置为相应的文本视图。因此,最终只有一个元素,最后一个元素设置为TextView
。要解决这个问题,您必须做出选择,一个是append文本viws的值,或者更优雅的方式是使用ListView
或RecyclerView
和适配器This是您如何从Firebase实时数据库检索数据,并使用和ArrayAdapter
将其显示在ListView
中,this是您如何使用FirebaseRecyclerAdapter
检索数据并将其显示在RecyclerView
中