在RecyclerView中滚动后查看重置

时间:2018-12-21 06:43:27

标签: android android-recyclerview recycler-adapter android-viewholder

我正在使用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内部。

如果我选择的是第一张图像并向下滚动,然后向上滚动,则视图将重置。

可以指出错误或行为吗?

2 个答案:

答案 0 :(得分:1)

RecyclerView重用您的布局。将您的逻辑放在onBindViewHolder方法上。

有关更多信息,请探索此问题 How to properly highlight selected item on RecyclerView?

答案 1 :(得分:0)

滚动时,RecyclerView将重用您的项目视图。要管理多重选择,您必须具有一组选定位置(或选定模型)。然后在onBindViewHolder中,检查此数组中的位置以检查是否选择了项目。有关实施的更多详细信息,请参阅:Multi selection in RecyclerView?