为什么RecyclerView不能正常工作setBackground功能?

时间:2016-03-30 07:09:21

标签: scroll android-recyclerview

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

或者我想要更改ForegroundColor。

我的问题视频 https://www.youtube.com/watch?v=C29qhPb44FE

我不知道原因......

2 个答案:

答案 0 :(得分:0)

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

RecyclerViews正在重复使用他们的观点。当一个项目离开屏幕时,它将被重复使用以提高回收者视图的性能。

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

答案 1 :(得分:0)

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

当您滚动单元格时,从屏幕中移出的视图将处于RECYCLED状态,随后将重复使用它们以显示传入视图。因此名称为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);
            }
        }
    });
}