RecyclerView项目在更改视图类型时消失

时间:2016-06-04 12:42:58

标签: android android-recyclerview

我有一个带有2种不同高度视图类型的recyclerview。 高度较高的那个几乎掩盖了整个屏幕。 item的默认视图类型是较小的一个,点击它时我将视图类型更改为较大的视图类型,并为该项目调用notifyItemChanged。

现在,假设我有5个项目都有小视图,所有这些项目都在屏幕上可见。当我点击第3个项目时,它会转换为较大的项目。只有3个项目可见,即第1个,第2个和第3个。现在,当我向下滚动时,我看不到第4和第5项。但是当我向上滚动然后再向下滚动时,第4和第5项出现了。

对此行为的解释以及如何解决?

@Override
public int getItemViewType(int position) {

    if(items.get(position).isExpanded())
        return ITEM_EXPANDED;
    else
        return ITEM_COLLAPSED;
}

@Override
public int getItemCount() {
    return items.size();
}


@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

    LayoutInflater inflater = LayoutInflater.from(mContext);

    switch (viewType){

        case ITEM_COLLAPSED:
            return new ViewHolder(inflater.inflate(R.layout.collapsed_item,null),items);
        case ITEM_EXPANDED:
            return new ViewHolder(inflater.inflate(R.layout.expanded_item,null),items);

    }
}

这是视图持有者类中用于更改视图类型的方法

     void onViewChanged(){

        int currentPosition = getAdapterPosition();
            items.get(currentPosition).setExpanded(!items.get(currentPosition).isExpanded());

                notifyItemChanged(currentPosition);
            }

1 个答案:

答案 0 :(得分:-1)

好吧,我添加了

android:clipToPadding="false"

到Recycler视图,现在一切正常