2017-09-28 3 views
0

Firebase를 사용 중이며 마지막 키 (메시지)를 받고 싶습니다. 그러나 내 코드에서는 NPE 만 생성합니다. FB 데이터베이스의 구조는 여기에서 볼 수있다 : 당신이 dataSnapShot 돌이가 유일한 개체를 가져해야파이어베이스가 마지막으로 자식을 생성합니다.

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

이 쿼리가 배열이 아닌 하나의 객체를 반환, 그래서이 다음은 마지막 채팅 ...

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