【问题标题】:RecyclerView change wrong value's on scroll up / downRecyclerView 在向上/向下滚动时更改错误的值
【发布时间】:2015-10-06 13:18:11
【问题描述】:

以前我使用列表视图和列表视图的自定义适配器。 一切正常,除非我向上和向下滚动数据更改(例如,我有一个 if 语句我适配器更改列表视图项的 bg 颜色。当我向上和向下滚动颜色更改错误,在第一次加载并且滚动一切都很好!)

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

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

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

谢谢!

【问题讨论】:

  • 如果您没有设置onBindViewHolder 的正确动态属性,则可能是这样。例如,您在一种情况下更改了背景,但您必须更改回 else 状态。请发布您的完整适配器类。

标签: android android-recyclerview


【解决方案1】:

一旦您设置了该属性,它就会对该项目保持不变。当您滚动时,该视图会从屏幕上消失,并且相同的项目布局会再次用于下一个项目。所以你需要写 else 条件来重置旧的属性。

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

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

【讨论】:

  • 这解决了这个问题,但我不明白为什么......我可以请你解释一下!
  • 对不起,它有效!我已经在上面编辑了我的评论。但我不明白为什么我现在工作。如果我仅在条件为 x 时更改颜色
  • 之所以有效,是因为一旦您为该项目设置了它持久的属性,一旦您滚动并且该视图从屏幕上消失,同一行项目布局再次用于下一个项目,因此您需要为下一个项目编写其他条件下次使用
  • @Gaurav 我在这里可能有类似的问题:stackoverflow.com/questions/43531900/…。我添加了 ELSE 语句,但仍然出现错误。如果您能提供有关如何解决的任何想法或想法,我将不胜感激。
猜你喜欢
  • 2022-01-01
  • 2016-02-01
  • 1970-01-01
  • 2020-12-21
  • 2015-05-15
  • 1970-01-01
  • 2018-07-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多