如何在android上的firebase中获取一个未知的命名子项?

时间:2017-02-13 19:03:44

标签: android firebase firebase-realtime-database parent-child

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

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

CheckOnline类是用于获取users / key节点内的值的模型。

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

enter image description here

我不能像我代码中那样循环使用循环,因为当用户触摸屏幕时,我必须在每个其他视图的顶部显示图像(位置,当手指在屏幕上时,布尔值为在孩子们的内心传递,但我认为他们不需要这个问题)。但是因为我的代码中有一个循环,应该在我的视图顶部的图像进入后台。 (我发现了这一点,通过删除此代码中的行,当我删除循环时,everthing对图像工作正常)

0 个答案:

没有答案