回收商视图
我正在从修改文字的图库和文字中添加图片。
两个数组用于获得两种不同的视图:
private ArrayList<Bitmap> mImages = new ArrayList<Bitmap>();
private ArrayList<String> mDataSet = new ArrayList<String>();
问题:我的getItemViewType方法显示Array out of index exception
并且未正确获取视图。
`@Override
public int getItemViewType(int position) {
if(modellist1.get(position) instanceof Bitmap) {
Log.d(TAG, "GETTING IMAGE VIEW TYPE");
return VIEW_TYPE_FIRST;
}
else if (modellist2.get(position) instanceof String) {
Log.d(TAG, "GETTING TEXT VIEW TYPE");
return VIEW_TYPE_SECOND;
}`
答案 0 :(得分:0)
我认为您不需要管理2个单独的列表来填充Recyclerview,即使它是动态的。 查看此链接Multiple View types in a recyclerview。
在列表中添加不同的元素后,recycleler视图会为您提供一个函数getItemViewType
,可让您指定哪个视图需要为哪个项目充气。
至于动态添加元素,您可以将元素添加到列表中,并通过使用适配器提供的各种辅助函数(例如notifyItemChanged
,notifyItemRangeInserted
等)来了解recyclerview适配器。
更多信息,请访问此链接Recycler View Adapter Documentation
关于图像的大小,实际上并不属于Recyclerview支架,这是基于您的自定义逻辑,要么您可以将imageview设置为40x40,要么可以使其成为match_parent,您可以控制视图被填充以及填充膨胀视图的逻辑。
答案 1 :(得分:0)
public int getItemViewType(int position) {
if (modellist.get(position).IfImage() != null) {
return VIEW_TYPE_FIRST;
} else {
return VIEW_TYPE_SECOND;
}
}