之前我使用了 ListView 和 ListView 的自定义适配器。 一切正常,除了当我上下滚动时数据发生变化(例如,我有一个 if 语句我的适配器更改 ListView 项目的 bg 颜色。当我向上和向下滚动时,颜色在第一次加载时变错了滚动一切都很好!)
我通过在适配器的 getView 方法中将 View 始终重置为 null 解决了 ListView 的这个问题。
v = null;
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = inflater.inflate(R.layout.friendlv, null);
现在我切换到 RecyclerView,我也遇到了同样的问题,但我不知道如何解决这个问题..
谢谢!
最佳答案
一旦您设置了该属性,它就会对该项目保持不变。当您滚动时,该 View 从屏幕上消失,并且相同的项目布局再次用于下一个项目。所以你需要写else条件来重置旧的属性。
因此,您应该将 else
语句添加到所有 if
语句中,如下例所示
if (condition) {
change bg color to new color
}
else {
change bg color to old color
}
关于android - RecyclerView 在向上/向下滚动时更改错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32971046/