Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.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 如何将不同类型的多个arraylist传递给单个recyclerview适配器_Android_Android Recyclerview - Fatal编程技术网

Android 如何将不同类型的多个arraylist传递给单个recyclerview适配器

Android 如何将不同类型的多个arraylist传递给单个recyclerview适配器,android,android-recyclerview,Android,Android Recyclerview,我试图使用一个RecyclerView.Adapter来查看多个片段中不同对象模型的多个ArrayList。 但是我不知道怎么做,有没有办法,如果可能的话我怎么做 我尝试使用列表对象并将其转换为我想要的对象模型。但我不知道如何在onBindViewHolder中使用它们,我甚至不知道这是否是一个正确的方法 public RItemAdapter(List<?> item,String tag) { if(tag.equals("battery")) {

我试图使用一个RecyclerView.Adapter来查看多个片段中不同对象模型的多个ArrayList。 但是我不知道怎么做,有没有办法,如果可能的话我怎么做

我尝试使用列表对象并将其转换为我想要的对象模型。但我不知道如何在onBindViewHolder中使用它们,我甚至不知道这是否是一个正确的方法

public RItemAdapter(List<?> item,String tag) {
        if(tag.equals("battery"))
        {
             bList = (List<BatteryModel>) item;
        }
        else if(tag.equals("device"))
        {
            dList = (List<DeviceModel>) item;
        }
        else if(tag.equals("network"))
        {
            nList = (List<NetworkModel>) item;
        }
        else if(tag.equals("storage"))
        {
            sList = (List<StorageModel>) item;
        }
        else if(tag.equals("weather"))
        {
            wList = (List<WeatherModel>) item;
    }

    }

我想用一个适配器在多个片段中填充多个RecyclerViews。

您可以创建一个基类,其他类将从中继承。您可以在继承的类中拥有所需对象的列表:每个单元格将包含一个数据对象,其中包含要显示的其他内容的列表。 然后,在适配器中只有一个基类列表,您将在适配器的getItemViewType方法中的某个位置设置对象的视图类型。 在onBindViewHolder中,只需在视图类型上切换大小写,并将右侧的ViewHolder绑定到大小写

以下是Kotlin中的示例代码:

class TestAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
    companion object {
        private const val VIEW_TYPE_ONE = 0
        private const val VIEW_TYPE_TWO = 1
    }

    private val data = mutableListOf<Data>()

    override fun onCreateViewHolder(
        parent: ViewGroup,
        viewType: Int
    ): RecyclerView.ViewHolder = when (viewType) {
        VIEW_TYPE_ONE -> ViewHolderOne.create(parent)
        VIEW_TYPE_TWO -> ViewHolderTwo.create(parent)
        else -> throw IllegalStateException("Viewtype $viewType unhandled")
    }

    override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
        when (holder) {
            is ViewHolderOne -> {
                holder.bind(data[position] as DataOne)
            }
            is ViewHolderTwo -> {
                holder.bind(data[position] as DataTwo)
            }
        }
    }

    override fun getItemViewType(position: Int): Int = when (data[position]) {
        is DataOne -> VIEW_TYPE_ONE
        is DataTwo -> VIEW_TYPE_TWO
    }

    override fun getItemCount(): Int = data.count()

    override fun getItemId(position: Int): Long = data[position].id

    fun setData(newData: List<MessageUiModel>) {
        data.clear()
        data.addAll(newData)
        notifyDataSetChanged()
    }
}

sealed class Data

data class DataOne(val list: List<Any>): Data()
data class DataTwo(val list: List<Any>): Data()
我找到了答案。也许它会帮助别人

private static void doProspecListCompareCheck(List rhsList)
{
    if(rhsList != null && !rhsList.isEmpty())
    {
        if (rhsList.get(0) instanceof SegReqInfoBean)
        {

        }
        else if(rhsList.get(0) instanceof SegmentDetailInfo)    
        {

        }
    }
}

创建HashMap。。。。它是可扩展的recyclerview吗?你能详细说明吗?我想在多个recyclerview中以多个片段显示数据,让我在中编辑它。需要传递一个键和从键,你可以访问hashmap键值请详细说明。您在onBindViewHolder中面临哪些问题?是否要显示每种类型的标题?