嗨,我试图在列表视图中显示数据库中多个节点的数据。
我想要做的就是为每种类型的锻炼显示“细节类别”和“细节价值”,每次保存。
这是我正在使用的数据库参考我的应用程序。
currentUserDB = FirebaseDatabase.getInstance().getReference("WorkoutDetails").child("Cardio").child(currentUId);
我知道这需要增加到更多的节点,但我不知道如何从多个节点一次读取。
我正在使用dataSnapshot来读取数据。我使用下面的代码在另一页的特定日期读取数据。所以问题可能只是在这种情况下使用数据库引用。
@Override
protected void onStart() {
super.onStart();
currentUserDB.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
cardiosList.clear();
for(DataSnapshot cardioHistorySnapshot : dataSnapshot.getChildren()){
Cardio cardio = cardioHistorySnapshot.getValue(Cardio.class);
cardiosList.add(cardio);
}
CardioHistoryList adapter = new CardioHistoryList(Cardio_History.this, cardiosList);
ListViewCardioHistory.setAdapter(adapter);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
正如我在你的评论中所看到的那样,你“直到日期节点”,根据这个,要显示detailCategory
和detailValue
,请使用以下代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference dateRef = rootRef.child("WorkoutDetails").child("Cardio").child(currentUId).child(date);
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot dSnapshot : dataSnapshot.getChildren()) {
for(DataSnapshot ds : dSnapshot.getChildren()) {
String detailCategory = ds.child("detailCategory").getValue(String.class);
String detailValue = ds.child("detailValue").getValue(String.class);
Log.d("TAG", detailCategory + " / " + detailValue);
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
dateRef.addListenerForSingleValueEvent(eventListener);
其中date
是currentUId
下的日期,可以是1-3-2018
,2-3-2018
等。正如您所看到的,要实现这一点,我们需要使用嵌套查询。