java - 从 Firebase 实时数据库、Android Studio、Java 获取数据

标签 java android firebase firebase-realtime-database

我正在寻找一种方法,以数组 [] 或字符串等格式从 firebase 实时数据库获取数据。

我的数据库是这样的: Link to image of database

或者: 数据库 | --> 用户 | -->UID1 -->UID2

这是数据库的根 我想获得“用户”子项中所有 UID 的列表。 这是我到目前为止的代码,有点卡住了:

DatabaseReference databaseReference = firebaseDatabase.getReference("Users");
        databaseReference.addValueEventListener(
                new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                        String UIDs = dataSnapshot.getValue(String.class);
                    }

                    @Override
                    public void onCancelled(DatabaseError databaseError) {
                    }
                });

在 java、android studio 和 firebase 方面,我有点菜鸟。我正在尝试以我知道如何使用的格式获取数据,例如字符串或字符串数​​组 []。我环顾四周是否其他人可能问过同样的问题,但我可以得到这些问题的答案来工作/不理解它们。 提前感谢您的宝贵时间!

最佳答案

要获取 uid 列表,请使用以下代码:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference usersRef = rootRef.child("Users");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        List<String> list = new ArrayList<>();
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String uid = ds.getKey();
            list.add(uid);
        }

        //Do what you need to do with your list
    }

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

我建议你只在回调中使用列表,否则它将是空的。如果你想在 onDataChange() 方法之外使用它,我建议你从这个 post 中看到我的答案的最后一部分。 我在其中解释了如何使用自定义回调来完成。你也可以看看这个 video 以便更好地理解。

关于java - 从 Firebase 实时数据库、Android Studio、Java 获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54244973/

相关文章:

ios - 我如何从 firebase 数据库中检索时间戳

java - 发送自定义 header RestTemplate

java - 如何保护将由 Java 应用程序调用的 AWS API Gateway 终端 Node ?

java - 使用 restController 发布对象

Android,10.1 和 9.7 英寸显示屏的不同布局

ios - 将错误的图片上传到我的 Firebase 存储

java - Google App Engine 后端实例时间预计翻倍

java - 使用 aChart Engine 使条形图的条形可点击

java - 如何获取设备网络信息? (安卓)

firebase - 如何根据用户属性、用户受众发送 Firebase Cloud Messaging 通知