【问题标题】:How can I populate an ExpandableListView child views through Firebase database?如何通过 Firebase 数据库填充 ExpandableListView 子视图?
【发布时间】:2018-12-06 08:32:30
【问题描述】:

我想用 Firebase 数据库中的值填充我的可扩展列表视图。我可以静态地将数据添加到视图中,但不能通过 Firebase。

这是我的代码:

public class ExpandableListitems {
public List<String> food;

public HashMap<String, List<String>> getData() {
    final HashMap<String, List<String>> expandableListDetail = new HashMap<String, List<String>>();



    //getting fooditems from database
    FirebaseDatabase firebaseDatabasefighter = FirebaseDatabase.getInstance();
    DatabaseReference databaseReferencefighter = firebaseDatabasefighter.getReference("food").child("food_details");
    ValueEventListener valueEventListenerfighter = new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            for (DataSnapshot ds : dataSnapshot.getChildren()) {

                food = new ArrayList<String>();
                String value = String.valueOf(ds.getValue());


                food.add(value);

                Log.i("vipan",value);
            }

        }

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

        }
    };
    databaseReferencefighter.addValueEventListener(valueEventListenerfighter);


    food.add("milk");
    food.add("dahi");
    food.add("paratha");
    food.add("aaloo");


   expandableListDetail.put("FoodItems", food);
    return expandableListDetail;

我的数据库是这样的:

  food

食物详细信息: “2% 脱脂牛奶”

我想将此 food_details 值添加到 listview 的视图中,但目前无法实现。我该如何实现?

【问题讨论】:

    标签: java android firebase firebase-realtime-database expandablelistview


    【解决方案1】:

    您现在无法返回尚未加载的内容。换句话说,您不能简单地返回expandableListDetail HashMap&lt;String, List&lt;String&gt;&gt;,其中包含作为方法结果来自数据库的字符串列表,因为由于此方法的异步行为,该列表将始终为empty。这意味着当您尝试返回该结果时,数据尚未从数据库中完成加载,这就是无法访问的原因。

    此问题的快速解决方案是仅在 onDataChange() 方法内使用 food 列表,否则我建议您从 post 中查看我的答案的最后一部分我已经解释了如何使用自定义回调来完成。您也可以看看这个 video 以获得更好的理解。

    【讨论】:

    • 嘿@Alex Mamo 我尝试了您帖子中的解决方案。但我得到一个 println 需要一个消息错误。
    • 您需要确保将不是null 的字符串传递给println() 方法。
    • 您能否在此处发布带有代码的答案以帮助我,因为我没有明白我做错了什么。在数据库中我有多个值,但我的应用程序直到崩溃
    • 这个println() 错误听起来是一个新问题,基本上应该被视为另一个无法在评论中回答或仅使用上述数据的问题。作为个人猜测,我认为您将 null 传递给该方法,但为了遵守本社区的规则,请使用 MCVE 发布另一个新问题,以便我和其他用户可以帮助您。
    猜你喜欢
    • 1970-01-01
    • 2018-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-29
    • 2012-08-30
    • 2016-09-17
    • 2021-04-27
    相关资源
    最近更新 更多