Firebase使最后一个孩子产生空

时间:2017-09-28 23:13:44

标签: android firebase firebase-realtime-database

我正在使用Firebase,我想获取最后一个密钥(消息)。但是我的代码只是生产NPE。 fb数据库的结构可以在这里看到:

Structure of DB

Query lastQuery = rootRef.child("Chatmessages").child(last).child(userid).orderByKey().limitToLast(1);
lastQuery.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        String message = dataSnapshot.child("message").getValue().toString(); // Error on this line
        // viewHolder.setUserStatus(message);
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

    }
});

1 个答案:

答案 0 :(得分:1)

查询返回一个数组而不是单个对象,因此你应该遍历dataSnapShot以获得它拥有的唯一对象:上次聊天...

@Override
public void onDataChange(DataSnapshot dataSnapshot) {
    for (DataSnapshot child: dataSnapshot.getChildren()) {
        String message = child.child("message").getValue().toString();
        // viewHolder.setUserStatus(message);
    }
}