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