我正在使用需要管理页面的firebase构建应用程序,在其中我想列出系统中注册的用户的所有用户名,我正在使用此代码:
Usernames = new ArrayList<>();
usersdb = FirebaseDatabase.getInstance().getReference().child("Users");
usersdb.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot user:dataSnapshot.getChildren()) {
Usernames.add(user.child("username").getValue().toString());
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
adp = new ArrayAdapter<String>(context,android.R.layout.simple_list_item_1,Usernames);
lv.setAdapter(adp);
由于某种原因,列表视图中没有显示任何人知道为什么?
我的数据结构如下所示:(随机字母是用户uid)
Users
----sdfbsif
-----------email
-----------username
-----------password
----djgsvnv
-----------email
-----------username
-----------password
答案 0 :(得分:0)
您在侦听器提供数据之前调用setAdapter()。 addValueEventListener
是异步的并立即返回,这意味着您将空列表传递给适配器。在整个代码中放置日志消息,以查看它正在执行的顺序。
相反,您可以在快照中的所有数据都可用后在回调中调用setAdapter。