【发布时间】:2019-04-07 03:15:31
【问题描述】:
我想检索特定孩子的数据,我该如何编写代码?我尝试了很多,但没有奏效:“([就像在我的数据库中一样,如何获取特定孩子(如 lubna)的任务并获取它的所有孩子?
【问题讨论】:
标签: java android firebase android-studio firebase-realtime-database
我想检索特定孩子的数据,我该如何编写代码?我尝试了很多,但没有奏效:“([就像在我的数据库中一样,如何获取特定孩子(如 lubna)的任务并获取它的所有孩子?
【问题讨论】:
标签: java android firebase android-studio firebase-realtime-database
初始化类变量:
private DatabaseReference mDatabase;
mDatabase = FirebaseDatabase.getInstance().getReference();
private DatabaseReference lubnaRef = mDatabase.child("tasks/Lubna");
然后出于测试目的,我假设您在活动的 onCreate 方法中调用它,假设您没有数据模型,您将添加以下内容:
lubnaRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//These are all of your children.
Map<String, Object> lubna = (Map<String, Object>) dataSnapshot.getValue();
for (String childKey: lubna.keySet()) {
//childKey is your "-LQka.. and so on"
//Your current object holds all the variables in your picture.
Map<String, Object> currentLubnaObject = (Map<String, Object>) lubna.get(childKey);
//You can access each variable like so: String variableName = (String) currentLubnaObject.get("INSERT_VARIABLE_HERE"); //data, description, taskid, time, title
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
【讨论】:
要解决这个问题,请使用以下代码行:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference lubnaRef = rootRef.child("tasks").child("Lubna");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String title = ds.child("title").getValue(String.class);
Log.d(TAG, title);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG, databaseError.getMessage());
}
};
lubnaRef.addListenerForSingleValueEvent(valueEventListener);
以同样的方式获取title,您也可以获取其他值。您的 logcat 中的输出将是:
Homework
//and so on
【讨论】: