如何实现 2 个未知大小的不同视图?
How to implement 2 different views of unknown size?
回收站视图
我正在添加图库中的 图片 和 edit text 中的文字。
用于获取两个不同视图的两个数组:
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;
}`
我认为您不需要管理 2 个单独的列表来填充 recyclerview,即使它是动态的。
看看这个 link Multiple View types in a recyclerview.
在列表中添加不同的元素后,回收器视图会为您提供一个函数 getItemViewType
,让您指定需要为哪个项目扩充哪个视图。
至于动态添加元素,您可以将元素添加到列表中,并通过使用适配器提供的各种辅助函数让 recyclerview 适配器知道,例如 notifyItemChanged
、notifyItemRangeInserted
等。
更多内容在此 link Recycler View Adapter Documentation
关于图像的大小,这并不真正属于 recyclerview 括号,这是基于您的自定义逻辑,您可以将 imageview 设为 40x40,也可以将其设为 match_parent,您有正在膨胀的视图的控制以及填充膨胀视图的逻辑。
public int getItemViewType(int position) {
if (modellist.get(position).IfImage() != null) {
return VIEW_TYPE_FIRST;
} else {
return VIEW_TYPE_SECOND;
}
}
回收站视图
我正在添加图库中的 图片 和 edit text 中的文字。
用于获取两个不同视图的两个数组:
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;
}`
我认为您不需要管理 2 个单独的列表来填充 recyclerview,即使它是动态的。 看看这个 link Multiple View types in a recyclerview.
在列表中添加不同的元素后,回收器视图会为您提供一个函数 getItemViewType
,让您指定需要为哪个项目扩充哪个视图。
至于动态添加元素,您可以将元素添加到列表中,并通过使用适配器提供的各种辅助函数让 recyclerview 适配器知道,例如 notifyItemChanged
、notifyItemRangeInserted
等。
更多内容在此 link Recycler View Adapter Documentation
关于图像的大小,这并不真正属于 recyclerview 括号,这是基于您的自定义逻辑,您可以将 imageview 设为 40x40,也可以将其设为 match_parent,您有正在膨胀的视图的控制以及填充膨胀视图的逻辑。
public int getItemViewType(int position) {
if (modellist.get(position).IfImage() != null) {
return VIEW_TYPE_FIRST;
} else {
return VIEW_TYPE_SECOND;
}
}