我正在使用Firebase,我想获取最后一个密钥(消息)。但是我的代码只是生产NPE。 fb数据库的结构可以在这里看到:
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) {
}
});
答案 0 :(得分:1)
查询返回一个数组而不是单个对象,因此你应该遍历dataSnapShot
以获得它拥有的唯一对象:上次聊天...
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot child: dataSnapshot.getChildren()) {
String message = child.child("message").getValue().toString();
// viewHolder.setUserStatus(message);
}
}