我有一个带有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);
}
答案 0 :(得分:-1)
好吧,我添加了
android:clipToPadding="false"
到Recycler视图,现在一切正常