使用Android获取Firebase Realtime数据库中最后一个节点的数组元素

时间:2018-09-17 20:37:06

标签: android firebase firebase-realtime-database

如下图所示,我有一个名为“ fridge”的数据库“表”,它有一个名为“ food”的子级。 food是一个可以包含一个或多个元素的数组。 我想访问最后一个节点并获取食物元素并将其添加到列表中,但是我不知道该怎么做。

Mesos

谢谢您的帮助

3 个答案:

答案 0 :(得分:1)

您可以遵循docs并使用limitToLast()方法。 Firebase中的键按字母顺序排列。

答案 1 :(得分:0)

您可以尝试获取数据:

mDatabase.child("fridge").child(fridgeId).child("food").addListenerForSingleValueEvent(
    new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) {
                 String foodItem = postSnapshot.getValue();
                 foodList.add(foodItem);
            }
        }
    });

答案 2 :(得分:0)

首先,创建一个列表来存储这些值。

List<String> food  = new ArrayList<>();

获取每个冰箱钥匙中最后存放的食物

mDatabase.child("fridge").child(yourPushID).child("food").limitToLast(1).addValueEventListener(new ValueEventListener() {
  @Override
  public void onDataChange(DataSnapshot dataSnapshot) {

    for(DataSnapshot snapshot : dataSnapshot.getChildren()){
    String lastFood = snapshot.getValue(String.class);
    //Add your food to the list
      food.add(lastFood);
      Log.e("Foods found:",""+lastFood);

       }
  }

  @Override
  public void onCancelled(DatabaseError databaseError) {
    System.out.println("The read failed: " + databaseError.getCode());
  }
});

yourPushID应该是生成随机密钥存储食物的方式

mDatabase在哪里

DatabaseReference mDatabase;

mDatabase = FirebaseDatabase.getInstance().getReference();