显示Firebase Android中多个节点的数据

问题描述 投票:0回答:1

嗨,我试图在列表视图中显示数据库中多个节点的数据。

我想要做的就是为每种类型的锻炼显示“细节类别”和“细节价值”,每次保存。

这是我正在使用的数据库参考我的应用程序。

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) {

        }
    });
}
android firebase firebase-realtime-database
1个回答
0
投票

正如我在你的评论中所看到的那样,你“直到日期节点”,根据这个,要显示detailCategorydetailValue,请使用以下代码:

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);

其中datecurrentUId下的日期,可以是1-3-20182-3-2018等。正如您所看到的,要实现这一点,我们需要使用嵌套查询。

© www.soinside.com 2019 - 2024. All rights reserved.