如何在一个列表中显示来自Firebase的所有数据?
问题描述:
我们正试图在列表中显示Firebase数据库中的所有数据。这是我们的代码到目前为止:如何在一个列表中显示来自Firebase的所有数据?
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("message");
如果有人可以帮助我们,这将是伟大的!
谢谢...
答
DatabaseReference myRef = database.getReference("message");
myRef.addListenerForSingleValueEvent(
new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//Get map of users in datasnapshot
collectPhoneNumbers((Map<String,Object>) dataSnapshot.getValue());
}
@Override
public void onCancelled(DatabaseError databaseError) {
//handle databaseError
}
});
private void collectPhoneNumbers(Map<String,Object> users)
{
ArrayList<String> phoneNumbers = new ArrayList<>();
List<ItemObjectVideo> allItems = new ArrayList<ItemObjectVideo>();
//iterate through each user, ignoring their UID
for (Map.Entry<String, Object> entry : users.entrySet()){
//Get user map
Map singleUser = (Map) entry.getValue();
//Get phone field and append to list
phoneNumbers.add((String)singleUser.get("url"));
allItems.add(new ItemObjectVideo((String)singleUser.get("name")));
}
rcAdapter = new VideoRecyclerViewAdapter(getApplicationContext(), allItems);
rView.setAdapter(rcAdapter);
rcAdapter.notifyDataSetChanged();
}
答
尝试使用此代码从火力地堡中的“消息”引用的所有项目名单。
myRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
long count = dataSnapshot.getChildrenCount();
if(count != 0){
for (DataSnapshot data : dataSnapshot.getChildren()){
Message mesgObj = data.getValue(Message.class);
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
您需要创建带Firebase字段的消息模型类。
我建议检查出的[文件](https://firebase.google.com/docs/database/android/lists-of-data#child-events)或尝试[代码实验室(https://开头codelabs .developers.google.com/codelabs /火力-机器人/)。 –