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