使用 Firebase 获取每个元素

如果我有这个来获取 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 中的 for each 循环中获取每个值,让我们说:


us.getNumber().get(0);

us.getNumber().get(1);

us.getNumber().get(2);


哆啦的时光机
浏览 123回答 2
2回答

扬帆大鱼

正如我在您的代码中看到的,您正在使用一个limit(3)将DataSnapshot对象中的结果限制为三个的调用。因此,要分别获取这三个用户,请将它们添加到 alist并list.get(position);像这样使用:ValueEventListener valueEventListener = new ValueEventListener() {&nbsp; &nbsp; @Override&nbsp; &nbsp; public void onDataChange(DataSnapshot dataSnapshot) {&nbsp; &nbsp; &nbsp; &nbsp; List<Users> list = new ArrayList<>();&nbsp; &nbsp; &nbsp; &nbsp; for(DataSnapshot ds : dataSnapshot.getChildren()) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Users users = ds.getValue(Users.class);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; list.add(users);&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; Users firstUser = list.get(0);&nbsp; &nbsp; &nbsp; &nbsp; Users secondUser = list.get(1);&nbsp; &nbsp; &nbsp; &nbsp; Users thirdUser = list.get(2);&nbsp; &nbsp; }&nbsp; &nbsp; @Override&nbsp; &nbsp; public void onCancelled(@NonNull DatabaseError databaseError) {&nbsp; &nbsp; &nbsp; &nbsp; Log.d(TAG, databaseError.getMessage());&nbsp; &nbsp; }};myRef.addListenerForSingleValueEvent(valueEventListener);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java