如果我要获取3个值:
myRef.child("users").orderByKey()
.limitToLast(3)
.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot: dataSnapshot.getChildren()) {
Users us = snapshot.getValue(Users.class);
if (firstvalue > second value) {
//get third value
}
Log.e("Datos: ", "" + us.getNumber());
}
}
它如何从dataSnapshot中每个循环的中获取每个值,说:
us.getNumber().get(0);
us.getNumber().get(1);
us.getNumber().get(2);
谢谢
答案 0 :(得分:1)
正如我在您的代码中看到的那样,您正在使用limit(3)
调用,这会将DataSnapshot
对象的结果限制为三个。因此,要分别获得这三个用户,请将它们添加到list
并像这样使用list.get(position);
:
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
List<Users> list = new ArrayList<>();
for(DataSnapshot ds : dataSnapshot.getChildren()) {
Users users = ds.getValue(Users.class);
list.add(users);
}
Users firstUser = list.get(0);
Users secondUser = list.get(1);
Users thirdUser = list.get(2);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG, databaseError.getMessage());
}
};
myRef.addListenerForSingleValueEvent(valueEventListener);
答案 1 :(得分:0)
您可以使用它来限制Firebase数据库记录。足球是足球运动的主要根源,然后具有以下孩子的元素,例如“得分”和“排名”。您可以按照以下步骤进行操作,也可以使用Firebase数据库URL,然后使用.json将所有JSON数据显示为响应。
DatabaseReference mDatabasePlayers =
FirebaseDatabase.getInstance().getReference().child("Football");
Query mDatabaseHighestPlayer =
mDatabasePlayers.child("Scores").orderByChild("rank").limitToLast(3);
mDatabaseHighestPlayer.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot){
for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
String Key = childSnapshot.getKey();
Toast.makeText(main.this,Key,Toast.LENGTH_LONG).show();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException(); // don't swallow errors
}
});
它将为您提供帮助。