是的,Android RecyclerView.Adapter允许在单个适配器中使用不同对象类型的列表。这可以通过重写getItemViewType
方法和创建多个ViewHolder来实现。以下是一个示例:
首先,在适配器中定义不同的对象类型常量:
private static final int TYPE_ITEM1 = 0;
private static final int TYPE_ITEM2 = 1;
然后,在适配器的getItemViewType
方法中根据位置返回对象类型:
@Override
public int getItemViewType(int position) {
if (position % 2 == 0) {
return TYPE_ITEM1;
} else {
return TYPE_ITEM2;
}
}
接下来,创建不同的ViewHolder类来处理不同的对象类型:
public class Item1ViewHolder extends RecyclerView.ViewHolder {
// Item1ViewHolder的相关视图和逻辑
// ...
}
public class Item2ViewHolder extends RecyclerView.ViewHolder {
// Item2ViewHolder的相关视图和逻辑
// ...
}
最后,在适配器的onCreateViewHolder
方法中根据对象类型创建对应的ViewHolder:
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
if (viewType == TYPE_ITEM1) {
View itemView = inflater.inflate(R.layout.item_type1, parent, false);
return new Item1ViewHolder(itemView);
} else if (viewType == TYPE_ITEM2) {
View itemView = inflater.inflate(R.layout.item_type2, parent, false);
return new Item2ViewHolder(itemView);
}
throw new IllegalArgumentException("Invalid view type");
}
通过以上步骤,您可以在单个适配器中使用不同对象类型的列表。每个对象类型都有自己的ViewHolder来处理对应的视图和逻辑。