Scroll 为什么RecyclerView不起作用?

Scroll 为什么RecyclerView不起作用?,scroll,android-recyclerview,Scroll,Android Recyclerview,我曾多次尝试在RecyclerView上设置背景色。但我尝试滚动,然后背景被删除。所以我可以在RecyclerView中修复backgroundColor。请帮帮我 或者我想换个颜色 我的问题视频 我不知道原因…如果您以编程方式设置背景色。每次都必须设置正常颜色和选定颜色 RecyclerViews正在重用它们的视图。当项目离开屏幕时,它将被重新使用,以提高“回收器”视图的性能 在这种情况下,当一个人以编程方式设置背景色,项目离开屏幕时。它将在新项目中重复使用,并且背景颜色仍与项目离开屏幕时相

我曾多次尝试在RecyclerView上设置背景色。但我尝试滚动,然后背景被删除。所以我可以在RecyclerView中修复backgroundColor。请帮帮我

或者我想换个颜色

我的问题视频


我不知道原因…

如果您以编程方式设置背景色。每次都必须设置正常颜色和选定颜色

RecyclerViews正在重用它们的视图。当项目离开屏幕时,它将被重新使用,以提高“回收器”视图的性能


在这种情况下,当一个人以编程方式设置背景色,项目离开屏幕时。它将在新项目中重复使用,并且背景颜色仍与项目离开屏幕时相同。

您需要首先了解RecyclerView的工作原理

当您在单元格中滚动时,屏幕外的视图将被回收,随后它们将被重新使用以显示传入的视图。因此命名为RecyclerView。这样,视图将始终被回收和重用,从而节省内存

您需要做的是这样的事情:

@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
    //mList and mSelectedObjects are array lists
    View yourView = holder.itemView.findViewById(R.id.your_view);
    Object object = mList.get(position);
    yourView.setTag(object);
    yourView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Object object = (Object) v.getTag();
            if (mSelectedObjects.contains(object)) {
                mSelectedObjects.remove(object);
                v.setBackground(null);
            } else {
                mSelectedObjects.add(object);
                v.setBackgroundColor(Color.GRAY);
            }
        }
    });
}

谢谢Jagoan Neon。确切地说,我不知道如何修改我的代码。无论如何,我真的很感谢你。