如何在android上的firebase中获得一个未知的命名子对象?

如何在android上的firebase中获得一个未知的命名子对象?,android,firebase,firebase-realtime-database,parent-child,Android,Firebase,Firebase Realtime Database,Parent Child,我有一个rootusers节点,其中有两个特定于设备的键,这两个键都指向一个设备。我使用这些键(它们是Build.SERIAL的输出)来识别这两个设备。我可以轻松检索设备的密钥,因为我知道它是什么。但是,当我对users节点一无所知时,如何检索该节点的另一个子节点,因为它将在运行时创建?我找到了一个解决方案,使用for循环,下载用户节点的所有子节点,将它们传递到数组列表,然后从数组中删除我的设备密钥,这样只剩下另一个,但我不能使用循环,因为它们会损坏我应用程序的其他部分。以下是代码部分: pri

我有一个root
users
节点,其中有两个特定于设备的键,这两个键都指向一个设备。我使用这些键(它们是
Build.SERIAL
的输出)来识别这两个设备。我可以轻松检索设备的密钥,因为我知道它是什么。但是,当我对
users
节点一无所知时,如何检索该节点的另一个子节点,因为它将在运行时创建?我找到了一个解决方案,使用
for
循环,下载
用户
节点的所有子节点,将它们传递到
数组列表
,然后从数组中删除我的设备密钥,这样只剩下另一个,但我不能使用循环,因为它们会损坏我应用程序的其他部分。以下是代码部分:

private ArrayList<String> getUser = new ArrayList<>();
private ValueEventListener = mValueEventListener;
private String key = Build.SERIAL;

private void attachReadListener(){
if (mValueEventListener == null) {
        mValueEventListener = new ValueEventListener() {

            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                //getting SERIAL uploaded by partner
                for (DataSnapshot childDataSnapshot : dataSnapshot.getChildren()) {
                    String children = childDataSnapshot.getKey();
                    getUser.add(children);
                    getUser.remove(key);
                }


                CheckOnline parseName = dataSnapshot.child(getUser.get(0)).getValue(CheckOnline.class);
//other code
private ArrayList getUser=new ArrayList();
私有ValueEventListener=mValueEventListener;
私有字符串密钥=Build.SERIAL;
私有void attachReadListener(){
if(mValueEventListener==null){
mValueEventListener=新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
//获取合作伙伴上传的序列号
对于(DataSnapshot childDataSnapshot:DataSnapshot.getChildren()){
String children=childDataSnapshot.getKey();
getUser.add(子项);
getUser.remove(键);
}
CheckOnline parseName=dataSnapshot.child(getUser.get(0)).getValue(CheckOnline.class);
//其他代码
CheckOnline
类是获取users/key节点中的值的模型

编辑:这是我的数据结构:


我不能像我的代码中那样使用循环,因为当用户触摸屏幕时,我必须在每个其他视图的顶部显示一个图像(当手指在屏幕上时,位置和布尔值在触摸子对象中传递,但我认为对于这个问题,它们是不必要的)。但是因为我的代码中有一个循环,所以应该在我视图顶部的图像会进入后台。(我通过删除代码中的行发现了这一点,当我删除循环时,所有关于图像的事情都很好)

你能添加你的数据库结构吗?“我不能使用循环,因为它们会损坏我应用程序的其他部分”你能解释一下你的意思吗?添加了所有必要的信息一个循环不会导致一个视图单独进入后台。你在这个循环中做了一些不正确的事情。你可以在代码中看到这个循环,我98%确定它会导致奇怪的行为。你能添加数据库结构吗?“我不能使用循环,因为它们会损坏我的应用程序的其他部分”你能解释一下你的意思吗?添加了所有必要的信息循环不会导致视图自行进入后台。你在循环中做了一些不正确的事情。你可以在代码中看到循环,我98%确信它会导致奇怪的行为