Java Android从Firebase检索数据并将其保存在ArrayList中

Java Android从Firebase检索数据并将其保存在ArrayList中,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我在firebase有一个等级表。评级列表的子节点是用户名,然后是地名和评级。我想将地名和评级数据保存在不同的数组列表中 问题: 如何通过跳过用户名来检索数据 在数组列表中,如何像这样保存数据 地名数组 ['Bricks Diner'、'Kingstreet Café'、'Royce Hotel']、[AV Rani Supermart Sdn Bhd、FamilyMart Plaza Sentral.] 评级数组 [3,1.5,3.5],[5,1.5]…要实现这一点,请使用以下代码行: Dat

我在firebase有一个等级表。评级列表的子节点是用户名,然后是地名和评级。我想将地名和评级数据保存在不同的数组列表中

问题:

  • 如何通过跳过用户名来检索数据
  • 在数组列表中,如何像这样保存数据
  • 地名数组 ['Bricks Diner'、'Kingstreet Café'、'Royce Hotel']、[AV Rani Supermart Sdn Bhd、FamilyMart Plaza Sentral.]

    评级数组
    [3,1.5,3.5],[5,1.5]…

    要实现这一点,请使用以下代码行:

    DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
    DatabaseReference ratingRef = rootRef.child("Rating");
        ratingRef.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
        @Override
        public void onComplete(@NonNull Task<DataSnapshot> task) {
            if (task.isSuccessful()) {
                for (DataSnapshot userSnapshot : task.getResult().getChildren()) {
                    List<String> places = new ArrayList<>();
                    List<Double> ratings = new ArrayList<>();
                    for (DataSnapshot placeSnapshot : userSnapshot.getChildren()) {
                        places.add(placeSnapshot.getKey());
                        ratings.add(placeSnapshot.child("rating").getValue(Double.class));
                    }
                    Log.d("TAG", places.toString());
                    Log.d("TAG", ratings.toString());
                }
            } else {
                Log.d(TAG, task.getException().getMessage()); //Don't ignore potential errors!
            }
        }
    });
    
    第二条log语句将在logcat中打印:

    [Bricks Diner, Kingstreet Café, Royce Hotel]
    [AV Rani Supermart Sdn Bhd, FamilyMart Plaza Sentral]
    ...
    
    [3, 1.5, 3.5]
    [5, 1.5]
    ...
    
    注意事项:

    • 为了能够从像您这样的数据库模式中获取数据,您需要使用“.getChildren()”方法在DataSnapshot中循环两次
    • 要获得该输出,您需要两个列表,第一个是“位置”,第二个是“评级”
    • 地点的名称是节点的键,而等级是节点中的子级

    这是否回答了您的第一个问题。关于第二个问题,请参阅