RecyclerView在向上/向下滚动时更改错误的值

问题描述:

以前我使用了一个listview和一个自定义适配器作为listview。 所有工作正常,除了当我滚动上下数据改变(例如我有一个if语句我适配器来改变列表视图项目的颜色。当我滚动上下颜色改变了错误,在第一个加载和滚动一切都很好!)RecyclerView在向上/向下滚动时更改错误的值

我解决了这个问题的列表视图通过重置视图始终在我的适配器中的getView方法为null。

v = null; 
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
v = inflater.inflate(R.layout.friendlv, null); 

现在我切换到RecyclerView有我同样的问题,但我不知道解决这个问题..

的感谢!

+1

它可能是,如果你没有设置'onBindViewHolder'的正确的动态属性说明你应该添加else语句将所有if语句。例如,您在一种情况下更改了背景,但您必须在“else”状态中更改。 Plz发布完整的适配器类。 –

设置属性后,该属性将保留该项目。滚动时,该视图从屏幕上消失,并且下一个项目再次使用相同的项目布局。所以你需要写else条件来重置旧的属性。

所以,在下面的例子中

if (condition) { 
    change bg color to new color 
} 
else { 
    change bg color to old color 
} 
+0

这解决了这个问题,但我不明白为什么......我可以请你解释一下! – markus

+0

对不起,它的工作原理!我上面编辑了我的评论。但我不明白我为什么现在工作。如果我只在条件是x时更改颜色 – markus

+0

它的工作原理是因为 一旦您将该属性设置为该项目的持久性,一旦您滚动并且该视图从屏幕上消失,那么相同的行项目布局会再次用于下一个项目,因此您需要写其他条件供下次使用 – Gaurav