首页 > 解决方案 > 如何从 Firebase (java) 中检索最后一个孩子?

问题描述

DatabaseReference lastRef = FirebaseDatabase.getInstance().getReference().child("Ranklist");
Query lastQuery = lastRef.orderByKey().limitToLast(1);
lastQuery.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot data) {
        newUser.Rank=Long.parseLong(data.getKey().toString())+1;

        OrderConsoleMessages();
        texts[0].setText("Last Rank is: "+newUser.Rank+" | UID: " + data.getValue());
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        OrderConsoleMessages();
        texts[0].setText(databaseError.toString());
    }
});

我的问题是如何从“Ranklist”中检索最后一个孩子?我尝试了orderByKeyByValue 但在我的情况下没有任何效果。我没有收到任何错误,我想我根本没有从这个查询中得到任何数据。

https://image.ibb.co/joKwCe/image.png

编辑:这是我从 data.getValue().toString ->>> {4=somekey4} 得到的

标签: javaandroidfirebasefirebase-realtime-database

解决方案


您的代码工作正常。我测试了它。您对数据库的查询返回父节点“Ranklist”的最后一个子节点。让您DatabaseReference dbref成为全球会员

dbRef = FirebaseDatabase.getInstance().getReference().child("Ranklist");
Query lastQuery = dbRef.orderByKey().limitToLast(1);
lastQuery.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
     for(DataSnapshot data : dataSnapshot.getChildren())
     {
       //if you call methods on dataSnapshot it gives you the required values
       String s = data.getValue(); // then it has the value "somekey4" 
       String key = data.getKey(); // then it has the value "4:"
       //as per your given snapshot of firebase database data 
      }
}

@Override
public void onCancelled(DatabaseError databaseError) {

}});

希望它有所帮助...

快乐编码:-)


推荐阅读