我正在寻找一种方法,以数组 [] 或字符串等格式从 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/