【问题标题】:Retrieve only a specific child from firebase realtime database into the Recyclerview仅从 firebase 实时数据库中检索特定子项到 Recyclerview
【发布时间】:2017-12-04 11:30:37
【问题描述】:

我有以下 firebase 数据库结构:

在用户 ID 子项下,我通过 系统日期创建了一个子项。日期子项将从系统日期创建,并且将不止一个。假设我有系统日期子项列表我将从我的 firebase 数据库中获取并显示在 Recyclerview 中?我该如何实现?数据模型类是什么?

【问题讨论】:

标签: android firebase firebase-realtime-database


【解决方案1】:

您需要创建自己的适配器:

  • 监听来自 Firebase 的 onDataChange 调用
  • 保留 Firebase 数据的内部副本
  • 数据变化时通知 RecyclerView
  • 在需要时创建视图持有者
  • 将 Firebase 数据中的数据绑定到视图

我能快速想到的最低限度是:

public static class MenuHomeAdapter extends RecyclerView.Adapter<MenuViewHolder> {
    ArrayList<Menu> items = new ArrayList<>();

    public MenuHomeAdapter(Firebase ref) {
        ref.addValueEventListener(new ValueEventListener() {
            public void onDataChange(DataSnapshot snapshot) {
                items.clear();
                for (DataSnapshot postSnapshot : snapshot.getChildren()) {
                    Menu menu = postSnapshot.getValue(Menu.class);
                    items.add(menu);
                }
                notifyDataSetChanged();
            }

            public void onCancelled(FirebaseError firebaseError) {
                System.out.println("The read failed: " + firebaseError.getMessage());
            }
        });
    }

    public MenuViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(android.R.layout.simple_list_item_1, parent, false);
        return new MenuViewHolder(view);
    }

    public void onBindViewHolder(MenuViewHolder holder, int position) {
        Menu item = items.get(position);
        holder.getTitleView().setText(item.getTitle());
    }

    public int getItemCount() {
        return items.size();
    }
};

【讨论】:

    猜你喜欢
    • 2019-02-04
    • 1970-01-01
    • 2020-07-15
    • 1970-01-01
    • 2023-04-03
    • 2021-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多