This question already has an answer here:
getContactsFromFirebase() method return an empty list
                                
                                    (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) {}});


java - arrayList为空的Firebase数据库-LMLPHP

最佳答案

要从数据库架构中获取键和值,请使用以下代码行:

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