【问题标题】:Array of Array List in Android to get the Firebase object of object [duplicate]Android中的Array List Array获取对象的Firebase对象[重复]
【发布时间】:2018-11-25 09:04:08
【问题描述】:

我想通过他们的评分计算每道菜的平均值并显示在条形图中,因此我需要每道菜的每个评分的值

示例 3 个人将牛奶从用户特定节点 linkToJSONTree 中的每个用户评为 {4,5,3}

我需要一个ArrayList,它可以在自己列表的每个索引中存储多个列表:

private void letMeCalculate() 
{

    databaseReference = FirebaseDatabase.getInstance().getReference("/Feedback/"+mdate+"/"+mealtime+"/");

    databaseReference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

            for (DataSnapshot i :  dataSnapshot.getChildren())
            {
                stringArrayList.add(i.getKey());
            }

        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {
        }
    });

    for (String s : stringArrayList)
    {
        databaseReference = FirebaseDatabase.getInstance().getReference("/Feedback/"+mdate+"/"+mealtime+"/"+s+"/");

        databaseReference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

               for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren())
               {
                   NewDishRating newDishRating = dataSnapshot1.getValue(NewDishRating.class);
                   newDishRatingList.add(newDishRating);

               }

            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
            }
        });
    }// end of for loop
}// end of function

【问题讨论】:

  • 这与提到的重复的完全不同,因为我有关于包含对象 ArrayList 的对象的查询,而提到的只说如何使用 List 获取一维对象数组,我的相当复杂.

标签: java android firebase firebase-realtime-database


【解决方案1】:

在回调外使用stringArrayList 时,由于onDataChange() 方法的异步行为,它始终为空。如果你想使用stringArrayList,你应该只在回调中使用它。所以要解决这个问题,请在第一个 for 循环结束后立即将第二个 for 循环移到 onDataChange() 方法中。

如果您需要在回调之外使用该列表,我建议您从 post 中查看我的 anwser 的最后一部分,其中我解释了如何使用自定义回调来完成.您也可以看看这个 video 以获得更好的理解。

【讨论】:

  • 感谢,因为我了解了 genericTypeIndicator,它对我很有用
  • @AkshayBengani GenericTypeIndicator 与异步 API 无关。这就是 Frank van Puffelen 将此问题标记为重复问题的原因。 GenericTypeIndicator 对于在运行时解析泛型集合的类型很有用。请不要混淆未来的访客。
【解决方案2】:

我得到了解决方案,而不是使用数组列表的数组列表我可以创建 genericTypeIndicator,点击此链接获取解决方案

https://stackoverflow.com/a/41503903/5867698

【讨论】:

  • 使用GenericTypeIndicator 不会解决异步问题。 GenericTypeIndicator 对于在运行时解析泛型集合的类型很有用,所以对于这个问题,我根本不建议未来的访问者使用这个答案。
猜你喜欢
  • 2021-12-31
  • 1970-01-01
  • 1970-01-01
  • 2015-11-28
  • 1970-01-01
  • 1970-01-01
  • 2015-08-26
  • 2011-01-23
  • 1970-01-01
相关资源
最近更新 更多