Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android RecyclerView更改错误的值';s在上/下滚动_Android_Android Recyclerview - Fatal编程技术网

Android RecyclerView更改错误的值';s在上/下滚动

Android RecyclerView更改错误的值';s在上/下滚动,android,android-recyclerview,Android,Android Recyclerview,之前,我使用了listview和listview的自定义适配器。 除了我上下滚动数据更改时,所有操作都正常(例如,我有一个if语句,用于更改listview项的bg颜色。当我上下滚动颜色更改错误时,在第一次加载和滚动时,所有操作都正常!) 我解决了listview的这个问题,方法是在适配器的getView方法中将视图始终重置为null v = null; LayoutInflater inflater = (LayoutInflater) getContext().getSystemServic

之前,我使用了listview和listview的自定义适配器。 除了我上下滚动数据更改时,所有操作都正常(例如,我有一个if语句,用于更改listview项的bg颜色。当我上下滚动颜色更改错误时,在第一次加载和滚动时,所有操作都正常!)

我解决了listview的这个问题,方法是在适配器的getView方法中将视图始终重置为null

v = null;
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = inflater.inflate(R.layout.friendlv, null);
现在我切换到RecyclerView,我也遇到了同样的问题,但我不知道如何解决这个问题


谢谢

设置属性后,该属性对于该项是持久的。当您滚动时,该视图将从屏幕上消失,相同的项目布局将再次用于下一个项目。因此,您需要写入else条件来重置旧属性

因此,您应该将
else
语句添加到所有
if
语句中,如下例所示

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

如果未设置
onBindViewHolder
的正确动态属性,则可能会出现这种情况。例如,您在一种情况下更改了背景,但必须在
else
状态下重新更改背景。请发布您的完整适配器类。这解决了问题,但我不明白为什么。。。我可以请你解释一下吗!对不起,它起作用了!我已经编辑了上面的评论。但是我不明白为什么我现在工作。如果我只在条件为xIt时更改颜色,因为一旦设置了该项的属性,它将持续显示该项,一旦滚动且该视图从屏幕上消失,同一行项布局将再次用于下一项,因此您需要为下一个useWorks写入else条件?请阅读其他帖子@Gaurav我在这里可能有类似的问题:。我添加了and ELSE语句,但仍然得到一个错误。如果您能提供有关如何修复的想法,我将不胜感激。