【问题标题】:How to change single item in RecyclerView without changing other layouts如何在不更改其他布局的情况下更改 RecyclerView 中的单个项目
【发布时间】:2019-02-08 09:25:59
【问题描述】:

我正在尝试在单击时切换 RecyclerView 中单个项目的背景颜色。我在实现 OnClickListener 的 ViewHolder 的 onClick 函数中执行此操作。这是 onClick 的实现:

int position = getLayoutPosition();
if (selected.containsKey(position)) {
    view.setBackgroundColor(context.getResources().getColor(R.color.white));
    selected.remove(position);
} else {
    view.setBackgroundColor(context.getResources().getColor(R.color.highlight));
    selected.put(position, view);
}

当我在填充的 RecyclerView 中对此进行测试时,就会出现问题。如果有很多项目,则在开始时选择一个也会突出显示列表中进一步看不到的其他项目。其他突出显示的视图不会添加到“选定”地图中。此外,在从选定视图滚动并返回它们后,它们有时会改变颜色。为什么会发生这种情况,我该如何解决?

【问题讨论】:

  • 我认为你的职位是最终的stackoverflow.com/questions/53837296/…
  • 您必须在 RecyclerView 的 POJO 中添加新参数。假设“selected=true”,然后每次触发时更新它,你的 setnotifyOnChanged kan 处理这个变化

标签: android android-recyclerview


【解决方案1】:

这是视图被回收的副作用。它们实际上正在被重复使用。只需确保在绑定视图时将背景颜色显式设置为默认颜色。应该这样做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多