如何创建一个android recyclerView,它显示具有不同模型类的firebase实时数据库数据? [重复]

问题描述 投票:-4回答:2

这个问题在这里已有答案:

我想要一个从Firebase实时数据库中获取数据的recyclerView。但是数据库节点包含具有不同模型类的数据。现在,我如何根据dataSnapshot检测我需要使用哪个模型类。

android firebase-realtime-database android-recyclerview recycler-adapter
2个回答
1
投票

您不需要多个适配器,您需要多个ViewHolders,请检查此How to create RecyclerView with multiple view type?

@Override
public int getItemViewType(int position) {
 //... if item is instance of ModelA return 0
 //... if item is instance of ModelB return 1
}

然后在onCreateViewHolder上

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
     switch (viewType) {
         case 0: return new ViewHolder0(...);
         case 1: return new ViewHolder1(...);
         ...
     }
}

并在onBindViewHolder中

@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {
    switch (holder.getItemViewType()) {
        case 0:
            ViewHolder0 viewHolder0 = (ViewHolder0)holder;
            ...
            break;

        case 1:
            ViewHolder1 viewHolder1 = (ViewHolder1)holder;
            ...
            break;
    }
}

1
投票

如果通过多适配器意味着在recyclerView中显示多种类型的recyclerViewItem,那么只需覆盖适配器类中的getItemViewType方法,然后在onCreateViewHolderHolder中通过检查viewType参数可以相应地使recyclerItemLayouts膨胀。

查看更多信息:https://www.journaldev.com/12372/android-recyclerview-example

© www.soinside.com 2019 - 2024. All rights reserved.