我正在使用RecyclerView在GridManager上实现多项选择。
这是我的适配器内的代码
imgStamps.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
//First setting up isSelected() or not
if (imageList.get(getAdapterPosition()).isSelected()) {
imageList.get(getAdapterPosition()).setSelected(false);
} else {
imageList.get(getAdapterPosition()).setSelected(true);
}
//Setting blur image on Imageview onLongclick and resting on again press.
if (imageList.get(getAdapterPosition()).isSelected()) {
mCount++;
imgBlurr.setVisibility(View.VISIBLE);
} else {
mCount--;
imgBlurr.setVisibility(View.GONE);
}
mCommunicator.clicked(mCount, getAdapterPosition());
return true;
}
});
以上代码位于ViewHolder
而非onBindViewHolder
内部。
如果我选择的是第一张图像并向下滚动,然后向上滚动,则视图将重置。
可以指出错误或行为吗?
答案 0 :(得分:1)
RecyclerView重用您的布局。将您的逻辑放在onBindViewHolder
方法上。
有关更多信息,请探索此问题 How to properly highlight selected item on RecyclerView?
答案 1 :(得分:0)
滚动时,RecyclerView将重用您的项目视图。要管理多重选择,您必须具有一组选定位置(或选定模型)。然后在onBindViewHolder中,检查此数组中的位置以检查是否选择了项目。有关实施的更多详细信息,请参阅:Multi selection in RecyclerView?