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

问题描述 投票:-3回答:2

回收视图

我正在添加图库中的图像和编辑文本中的文本。

两个数组用于获取两个不同的视图: 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;
     }`
java android android-recyclerview recycler-adapter recyclerview-layout
2个回答
0
投票

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

在列表中添加不同的元素后,recycleler视图会为您提供getItemViewType函数,该函数允许您指定哪个视图需要为哪个项目充气。至于动态添加元素,您可以将元素添加到列表中,并通过使用适配器提供的各种辅助函数(例如notifyItemChangednotifyItemRangeInserted等)来了解recyclerview适配器。更多链接Recycler View Adapter Documentation

关于图像的大小,实际上并不属于recyclelerview支架,这是基于您的自定义逻辑,您可以将imageview设置为40x40,或者可以使其成为match_parent,您可以控制正在充气的视图用填充膨胀视图的逻辑。


0
投票
public int getItemViewType(int position) {
    if (modellist.get(position).IfImage() != null) {
            return VIEW_TYPE_FIRST;
        } else {
            return VIEW_TYPE_SECOND;
        }

    }
© www.soinside.com 2019 - 2024. All rights reserved.