Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取childs firebase android的数量,并将所有孩子放入字符串arrayList中_Android_Firebase_Arraylist_Firebase Realtime Database - Fatal编程技术网

获取childs firebase android的数量,并将所有孩子放入字符串arrayList中

获取childs firebase android的数量,并将所有孩子放入字符串arrayList中,android,firebase,arraylist,firebase-realtime-database,Android,Firebase,Arraylist,Firebase Realtime Database,我的孩子列表屏幕截图 我需要获得child的数量(没有嵌套的child!),并将其存储在全局公共变量中。另外,我希望所有的孩子都放在一个字符串数组列表中 提前谢谢 使用某种形式的倾听者。对于单个查找,请使用valueEventListener 然后在自动生成的OnDataChange()方法中。使用datasnapshot获取childrenCount,然后通过childrenCount将其添加到列表中 List<String> list = new ArrayList<&g

我的孩子列表屏幕截图

我需要获得child的数量(没有嵌套的child!),并将其存储在全局公共变量中。另外,我希望所有的孩子都放在一个字符串数组列表中


提前谢谢

使用某种形式的倾听者。对于单个查找,请使用valueEventListener

然后在自动生成的OnDataChange()方法中。使用datasnapshot获取childrenCount,然后通过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
        }
    });
}
List List=new ArrayList();
长childrenCount;
public void getListItems()
{
DatabaseReference ref=FirebaseDatabase.getInstance().getReference();
ref.addValueEventListener(新的ValueEventListener()
{
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot)
{
childrenCount=dataSnapshot.child(“searchingUsers”).getChildrenCount();
for(DataSnapshot快照:DataSnapshot.child(“searchingUsers”).getChildren())
{
//如果需要节点值
添加(snap.getValue().toString());
//如果需要键值
添加(snap.getKey());
}
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
抛出databaseError.toException();//不要忽略错误
}
});
}

这使这两个变量都成为活动中的全局变量。因此,您可以从“活动”中的任何位置访问它们。要获得所有这些随机值的列表,请使用以下代码行:

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);
DatabaseReference rootRef=FirebaseDatabase.getInstance().getReference();
DatabaseReference searchingUsersRef=rootRef.child(“searchingUsers”);
ValueEventListener ValueEventListener=新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
列表=新的ArrayList();
对于(DataSnapshot ds:DataSnapshot.getChildren()){
String value=ds.getValue(String.class);
列表。添加(值);
}
//用你的列表做你需要做的事情
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
Log.d(标记,databaseError.getMessage());
}
};
searchingUsersRef.addListenerForSingleValueEvent(valueEventListener);

正如您所看到的,我只在回调内部使用了列表,如果您想在回调外部使用列表,我建议您查看我的anwser的最后一部分,我在其中解释了如何使用自定义回调。您还可以查看此以更好地理解。

您好,欢迎来到stackoverflow。那么,到目前为止,您尝试了什么来实现相同的效果呢?嗨,santhosh,我尝试在侦听器之外创建一个列表变量,并在for()循环中添加每个键值,但没有成功,对于count,我使用了arraylist.size()@Hafeezulhaq请看一看。这是我们了解您所面临困难的最佳方式。谢谢您的回答,但您能否给出一些想法,如何在Listener范围之外使用'list'和childrenCount变量?您真的不能。您必须将需要数据的代码移动到
onDataChange
或从那里调用它。请参见,并在编辑中查看。当您在函数外部声明变量时,您可以从活动中的任何位置访问它们,而不仅仅是在侦听器中。我只是不确定这是否是最好的做法“list”仍然是空的,我不知道为什么我尝试了public list itemsList()并返回list变量,但没有成功!感谢您的贡献,得到了解决方案!在监听器范围内执行任务!很高兴听到这个消息。在这种情况下,请考虑通过点击投票箭头上的复选标记接受我的答案,应该改变绿色中的颜色。我会很感激的。谢谢好了,谢谢!但看起来我只能勾选一个答案,这是第一个。答案来自@janwilx72