代码之家  ›  专栏  ›  技术社区  ›  h_h10a

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

  •  1
  • h_h10a  · 技术社区  · 6 年前

    如下图所示,我有一个名为“table”的数据库 fridge 有个孩子打电话来 food . 可以包含一个或多个元素的数组。 我想访问最后一个节点,获取food元素并将它们添加到一个列表中,但我无法确定如何执行此操作。

    enter image description here

    3 回复  |  直到 6 年前
        1
  •  1
  •   Juanje    6 年前

    你可以跟着 docs

        2
  •  0
  •   David Velasquez    6 年前

    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);
                }
            }
        });
    
        3
  •  0
  •   Gastón Saillén Michael Lehenbauer    6 年前

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

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