【问题标题】:Reading data from firebase real time database into text view从 firebase 实时数据库中读取数据到文本视图中
【发布时间】:2019-10-11 15:40:41
【问题描述】:

我想从 firebase 实时数据库中读取数据并在 textview 中设置检索到的数据,这是我目前尝试过的。

     private DatabaseReference buckybarnz;
 .........
buckybarnz =  FirebaseDatabase.getInstance().getReference().child(userID).child("chel_sea");
  ValueEventListener eventListener = buckybarnz.addValueEventListener(new ValueEventListener() {
 @Override
 public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
    if (dataSnapshot1 != null) {
        DRive dRive = dataSnapshot1.getValue(DRive.class);
        if (dRive != null) {
            String receipt = dRive.getExt_ref().trim();
            String text = dRive.getTxt_Ref().trim();

            chalwe.setText(text);
            johns.setText(receipt);

        } else {
            String a = "no pending refunds available";
            anthony.setText(a);
            chalwe.setText(a);
            johns.setText(a);
        }
    } else {
            String a = "no pending refunds available";
            anthony.setText(a);
            chalwe.setText(a);
            johns.setText(a);
}
}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {

}
});

没有任何工作,即使数据库中有数据,文本视图也没有任何反应。

请帮忙,解决这个问题的最佳方法是什么,即使是使用字符串类方法的解决方案也是有益的。下面是我的数据库的视图this is a view of my database, BSQ.... being the userID]1

【问题讨论】:

  • 请提供更详细的架构,其中应包含上层节点。

标签: java android firebase-realtime-database


【解决方案1】:

与您相比,我访问数据库的方式不同:

Firebase.setAndroidContext(this);
       Firebase reference1 = new Firebase("https://project-id.firebaseio.com/messages/");  //replace project-id by your project-id
            reference1.addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(DataSnapshot dataSnapshot, String s) {

                System.out.println("reference4: data snapshot key"+dataSnapshot.getKey()+"");

                //your code
            }

            @Override
            public void onChildChanged(DataSnapshot dataSnapshot, String s) {

            }

            @Override
            public void onChildRemoved(DataSnapshot dataSnapshot) {

            }

            @Override
            public void onChildMoved(DataSnapshot dataSnapshot, String s) {

            }

            @Override
            public void onCancelled(FirebaseError firebaseError) {

            }
        });

希望对你有帮助

【讨论】:

  • 而不是 /messages 使用您的表名。如果您遇到任何问题,请告诉我。
  • 例如,您将如何从数据库中检索 'ext_ref' 和 txt_Ref。因为当我将代码放在“您的代码”的位置时,我收到错误“尝试在添加的子对象的空对象引用上调用虚拟方法 java.lang.String.trim”,此错误位于“String text =dRive”行.getExt_ref().trim();'
  • 我已经在第二个回答中进一步解释了,如果它对你有用,请告诉我。
  • 现在的错误是can't convert of object of java.lang.string to type com.chomba.Drive,这个错误在同一点代码
  • 您能否在问题中添加您的云端硬盘课程
【解决方案2】:

首先你不必编写 for 循环,这应该是你在我的代码的 onChildAdded() 方法中编辑的代码:

if (dataSnapshot != null) {
        DRive dRive = dataSnapshot.getValue(DRive.class);
        if (dRive != null) {
            String receipt = dRive.getExt_ref().trim();
            String text = dRive.getTxt_Ref().trim();

            chalwe.setText(text);
            johns.setText(receipt);

        } else {
            String a = "no pending refunds available";
            anthony.setText(a);
            chalwe.setText(a);
            johns.setText(a);
        }
    } else {
            String a = "no pending refunds available";
            anthony.setText(a);
            chalwe.setText(a);
            johns.setText(a);
}
}

希望这可行

【讨论】:

    猜你喜欢
    • 2021-05-09
    • 1970-01-01
    • 1970-01-01
    • 2021-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多