Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我如何创建一个android recyclerView,它显示具有不同模型类的firebase实时数据库数据?_Android_Firebase Realtime Database_Android Recyclerview - Fatal编程技术网

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

我如何创建一个android recyclerView,它显示具有不同模型类的firebase实时数据库数据?,android,firebase-realtime-database,android-recyclerview,Android,Firebase Realtime Database,Android Recyclerview,我想要一个从Firebase实时数据库获取数据的recyclerView。但是数据库节点包含具有不同模型类的数据。现在,如何根据dataSnapshot检测需要使用的模型类。您不需要多个适配器,您需要多个ViewHolder,请选中此项 然后在onCreateViewHolder中 @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { switch (

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

您不需要多个适配器,您需要多个ViewHolder,请选中此项

然后在onCreateViewHolder中

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
     switch (viewType) {
         case 0: return new ViewHolder0(...);
         case 1: return new ViewHolder1(...);
         ...
     }
}
@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;
    }
}
和在onBindViewHolder中

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
     switch (viewType) {
         case 0: return new ViewHolder0(...);
         case 1: return new ViewHolder1(...);
         ...
     }
}
@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;
    }
}

如果“多适配器”的意思是在recyclerView中显示多种类型的RecyclerItem,则只需重写适配器类中的getItemViewType方法,然后在OnCreateViewHolder中,通过选中viewType参数,可以相应地放大recyclerItemLayouts


查看此链接了解更多信息:

所有不同类型的数据都在同一个节点中,具有不同的推送id。现在,我如何检测即将到来的json数据类型(例如,第一次说名称:Bhaskar,年龄:22岁,第二次下载数据是地区:Jorhat,国家:印度等).以及我的问题中为什么要做否定标记。谁给我这个?如果你不喜欢我的问题,那么你不应该回答,但为什么给我负面分数呢。虽然我不在乎正负标记,但这让我很生气。你必须了解你在处理什么样的JSON数据。例如,您可以为以“name”为键的JSON对象创建一个视图,为以“district”为键的数据创建另一个视图。为了避免对您的问题投反对票,请尝试在现有或已回答的问题中搜索这些问题,让它们切中要害,等等。快乐编码!!我在你的回答下面添加了评论,因为我没有找到任何其他地方添加该评论。但我不是指你,我指的是下层选民。对不起。您的链接很有帮助。请检查副本以了解如何使用两个不同的类。