使用Firebase从每个元素获取每个元素

时间:2018-10-05 03:49:42

标签: java android firebase firebase-realtime-database

如果我要获取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);

谢谢

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
    }
 });

它将为您提供帮助。