Android 如何使用'从最高/最后一级节点检索值;ChildEventListener';来自Firebase?
我在特定引用下存储了几个字符串:Android 如何使用'从最高/最后一级节点检索值;ChildEventListener';来自Firebase?,android,android-studio,firebase,firebase-realtime-database,key-value,Android,Android Studio,Firebase,Firebase Realtime Database,Key Value,我在特定引用下存储了几个字符串:mReference.child(rID).child(userID2),我想使用childEventListener检索这些字符串,因为当这些字符串被删除时,我也在执行一些任务,而这只能通过childEventListener的onChildRemoved实现 以下是我尝试过的: mReference.child(rID).child(userID2).addChildEventListener(new ChildEventListener() {
mReference.child(rID).child(userID2)
,我想使用childEventListener
检索这些字符串,因为当这些字符串被删除时,我也在执行一些任务,而这只能通过childEventListener
的onChildRemoved
实现
以下是我尝试过的:
mReference.child(rID).child(userID2).addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Log.d("dataHEre", dataSnapshot.getValue().toString());
}
}
问题是我无法在此处使用键
检索数据,因为数据此处
正在注销:
D/dataHEre: 28.8419556
D/dataHEre: 78.779063
D/dataHEre: 3
D/dataHEre: Railway Colony
D/dataHEre: Sleep
D/dataHEre: 12:36 AM
D/dataHEre: Superman
哪些是值
因此,我想知道如何使用
键和ChildEventListener
在这里检索数据,然后将检索到的数据分配给各种字符串?我认为您的查询方式不对onChildAdded
方法将检索特定值(我想是userID2)的每个子级。如果这是您想要的,那么只需使用onValueEventListener()
在每次更改时检索userId2节点的整个dataSnapshot
如果只想检索一次数据,应使用onSingleValueEventListener()
。而OnChildEvent()
用于检索要单独跟踪每个子级的数据列表。例如,如果您将OnChildEventListener
附加到mReference.child(rID)
上,您将为每个用户ID获得onchildaded
,这是非常有用的,例如填充recyclererview
或ListView
,以便能够与Firebase数据一起单独更新每个项目
如果我没记错的话,您想要的只是更新您的userId2
引用,在这种情况下,在该引用上附加一个OnValueEventListener
,您将在每次修改、删除或添加值时得到一个调用
firebaseDatabaseRef.addValueEventListener(new ValueEventListener() {
@Override public void onDataChange(DataSnapshot dataSnapshot) {
customPOJO customPOJO = dataSnapshot.getValue(YourCustomPOJO.class);
customPOJO.getName();
customPOJO.getEmail();
customPOJO.getfavoriteFood();
//and so on....
}
@Override public void onCancelled(DatabaseError databaseError) {
}
});
我明白你的意思。。我已经试过了,但正如我在问题中提到的,我想使用childEventListener进行检索,因为当这些字符串被删除时,我也在执行一些任务,而这仅在onChildRemoved
中是可能的。这就是问题所在:/我的意思是,如果在删除和字符串时使用ValueEventListener
,您将收到带有新项的onDataChange
数据,然后您可以执行myNewItem.getMyDesiredString()
,如果删除了字符串,该调用将返回null,然后你就可以完成你想要的任务了。