如何遍历firebase随机生成的不同键值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何遍历firebase随机生成的不同键值相关的知识,希望对你有一定的参考价值。

这是我想要遍历的数据结构,因为你可以看到用户有不同的用户,我可以轻松遍历,因为它们是在firebase身份验证期间生成的用户ID,所以我可以访问它们但现在我想遍历事件节点我用push创建它们时具有未知的键值,并且使用push创建了attenance节点并且应该具有多个值我应该如何在它们之间遍历

答案

要解决这个问题,有两种方法。如果您要使用名为Event的模型类向数据库添加数据,以获取数据,请使用以下代码行:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference eventsRef = rootRef.child("users").child(uid).child("events");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            Event event = ds.getValue(Event.class);
            Log.d(TAG, event.getName());
        }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
    }
};
eventsRef.addListenerForSingleValueEvent(valueEventListener);

第二种方法是使用String类,如下面的代码行:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference eventsRef = rootRef.child("users").child(uid).child("events");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String name = ds.child("name").getValue(String.class);
            Log.d(TAG, name);
        }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
    }
};
eventsRef.addListenerForSingleValueEvent(valueEventListener);

在这两种情况下,logcat中的输出将是:

Yoga Camp
Blood Donation Camp

以上是关于如何遍历firebase随机生成的不同键值的主要内容,如果未能解决你的问题,请参考以下文章

排序数组以及遍历普通对象的键值对以及如何遍历一个不同键值的对象数组

Firebase 实时数据库:如何迭代每个键值

请问如何用随机函数生成二叉树,并遍历?

如何从 Firebase 获取数据到 Recyclerview 中的片段?

如何通过键值从firebase中检索对象

在 Firebase 中禁用自动活动跟踪