如何实现2个不同大小的视图?

时间:2018-02-04 07:23:32

标签: java android android-recyclerview recycler-adapter recyclerview-layout

回收商视图

我正在从修改文字的图库和文字中添加图片

两个数组用于获得两种不同的视图:
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 个答案:

答案 0 :(得分:0)

我认为您不需要管理2个单独的列表来填充Recyclerview,即使它是动态的。 查看此链接Multiple View types in a recyclerview

在列表中添加不同的元素后,recycleler视图会为您提供一个函数getItemViewType,可让您指定哪个视图需要为哪个项目充气。 至于动态添加元素,您可以将元素添加到列表中,并通过使用适配器提供的各种辅助函数(例如notifyItemChangednotifyItemRangeInserted等)来了解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;
        }

    }