【问题标题】:Retrieving data using Map from Firebase Database使用 Map 从 Firebase 数据库检索数据
【发布时间】:2017-09-18 10:14:10
【问题描述】:

我正在尝试以 Map 格式从 firebase 数据库中检索数据,但出现空指针异常。我已使用 map 成功地将数据插入到我的 firebase 数据库中。

这是我的代码:

public class Chat extends AppCompatActivity {

  DatabaseReference databaseReference1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_chat);

    Firebase.setAndroidContext(this);
    databaseReference1 = FirebaseDatabase.getInstance().getReferenceFromUrl("URL");

    databaseReference1.addChildEventListener(new com.google.firebase.database.ChildEventListener() {
        @Override
        public void onChildAdded(com.google.firebase.database.DataSnapshot dataSnapshot, String s) {
            Map map = (Map) dataSnapshot.getValue();
            String message = map.get("text").toString();   //ERROR GOES HERE!!
            String userName = map.get("Username").toString();

        }

        @Override
        public void onChildChanged(com.google.firebase.database.DataSnapshot dataSnapshot, String s) {

        }

        @Override
        public void onChildRemoved(com.google.firebase.database.DataSnapshot dataSnapshot) {

        }

        @Override
        public void onChildMoved(com.google.firebase.database.DataSnapshot dataSnapshot, String s) {

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}


}

【问题讨论】:

  • 在这里发布错误日志
  • 在我的帖子中看到我已将错误表示为评论。
  • 推送记录或检索时出错
  • 您检查过您插入的记录吗?在火力基地上?
  • 在对map.get("text).toString 调用toString() 方法之前,请检查map 的值

标签: android firebase firebase-realtime-database


【解决方案1】:

在检索时更改您的代码

Map<String, String> map  = (Map) dataSnapshot.getValue();

而不是

Map map = (Map) dataSnapshot.getValue();

编辑: 您可以使用以下代码检索录音列表

databaseReference1.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
            Map<String, String> map = (Map) postSnapshot.getValue();
            if (map != null) {
                String message = map.get("text");
                String userName = map.get("Username");
            }
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
    }
});

【讨论】:

  • 确定只是一分钟
  • 您可以将单串中的所有记录作为列表检索
  • ChildEventListener 一条一条检索记录
猜你喜欢
  • 2020-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-16
相关资源
最近更新 更多