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”中检索最后一个 child ?我试图 orderByKey
ByValue 但在我的情况下没有任何效果。我没有收到任何错误,我想我只是没有从此查询中获取任何数据。
编辑:这是我从 data.getValue().toString 得到的 ->>> {4=somekey4}
最佳答案
您的代码工作正常。我测试了它。您对数据库的查询返回父节点“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) {
}});
希望对你有帮助...
快乐编码:-)
关于java - 如何从 Firebase (java) 中检索最后一个 child ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51973982/