我的孩子列表截图
我需要获取孩子的数量(那里没有嵌套的孩子!)并将其存储在全局公共变量中。另外,我希望所有子项都放入字符串数组列表。
谢谢!
答案 0 :(得分:1)
使用某种形式的侦听器。对于单次查找,请使用valueEventListener。
然后在自动生成的OnDataChange()方法中。使用数据快照获取childrenCount,然后浏览孩子并将它们添加到列表中
List<String> list = new ArrayList<>();
long childrenCount;
public void getListItems()
{
DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
ref.addValueEventListener(new ValueEventListener()
{
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot)
{
childrenCount = dataSnapshot.child("searchingUsers").getChildrenCount();
for (DataSnapshot snap : dataSnapshot.child("searchingUsers").getChildren())
{
//If you want the node value
list.add(snap.getValue().toString());
//If you want the key value
list.add(snap.getKey());
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
throw databaseError.toException(); // don't ignore errors
}
});
}
这会使两个变量在Activity中成为全局变量。这样您就可以从“活动”中的任何地方联系他们
答案 1 :(得分:0)
要获取所有这些随机值的列表,请使用以下代码行:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference searchingUsersRef = rootRef.child("searchingUsers");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
List<String> list = new ArrayList<>();
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String value = ds.getValue(String.class);
list.add(value);
}
//Do what you need to do with your list
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG, databaseError.getMessage());
}
};
searchingUsersRef.addListenerForSingleValueEvent(valueEventListener);
如您所见,我仅在回调内部使用了该列表,如果您想在外部使用该列表,建议您从此 post 中查看anwser的最后一部分在其中,我解释了如何使用自定义回调来完成。您也可以查看此 video 以获得更好的理解。