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

Joc*_*der 3 java android firebase firebase-realtime-database

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

我的数据库看起来像这样: 链接到数据库的图像

或者: Database | -->Users | -->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) {
                    }
                });
Run Code Online (Sandbox Code Playgroud)

我对 java、android studio 和 firebase 有点菜鸟。我试图以我知道如何使用的格式获取数据,例如字符串或字符串数​​组 []。如果其他人可能问过同样的问题,我环顾四周,但我可以得到这些问题的答案/不理解它们。在此先感谢您的时间!

Ale*_*amo 5

要获取 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);
Run Code Online (Sandbox Code Playgroud)

我建议您仅在回调中使用该列表,否则它将为空。如果您想在onDataChange()方法之外使用它,我建议您从这篇文章中查看我的 anwser 的最后一部分,其中我解释了如何使用自定义回调来完成。您也可以观看此视频以更好地理解。