This question already has an answer here:
getContactsFromFirebase() method return an empty list
(1个答案)
4个月前关闭。
我已经看到了与此相关的几个答案,但是从一个星期开始就不知道该如何做。
数组列表为空
我尝试使用查询,使用该函数,但为此无法获得任何简单或更好的工作解决方案
您的logcat中的输出将是:
同样,您也可以获取其他属性的值。除此之外,您可以使用相同的属性创建
How to return DataSnapshot value as a result of a method?
(1个答案)
4个月前关闭。
我已经看到了与此相关的几个答案,但是从一个星期开始就不知道该如何做。
数组列表为空
我尝试使用查询,使用该函数,但为此无法获得任何简单或更好的工作解决方案
mUserDatabase=FirebaseDatabase.getInstance().getReference().child(uid).child("Medicines");
mUserDatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot childDataSnapshot : dataSnapshot.getChildren()) {
for (DataSnapshot childDataSnapshot2 : childDataSnapshot.getChildren()) {
//GET MEDICINE NAME
arrayList.add(childDataSnapshot2.getKey());
}}
@Override
public void onCancelled(DatabaseError databaseError) {}});
最佳答案
要从数据库架构中获取键和值,请使用以下代码行:
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference medicinesRef = rootRef.child(uid).child("Medicines");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String key = ds.getKey();
String altisgpt = ds.child("ALTISGPT").getValue(String.class);
Log.d(TAG, key + " -> " + altisgpt);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
}
};
medicinesRef.addListenerForSingleValueEvent(valueEventListener);
您的logcat中的输出将是:
2019-1-27 -> 72 u/L
同样,您也可以获取其他属性的值。除此之外,您可以使用相同的属性创建
Medicine
(POJO)类,以将Medicines
下的每个节点映射到类型为Medicine
的对象。这样,您可以简单地创建Medicine
对象的列表并根据需要使用它。也请不要忘记从以下帖子中查看我的回答:How to return DataSnapshot value as a result of a method?
关于java - arrayList为空的Firebase数据库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59519273/
10-10 05:03