【问题标题】:How to properly DEselect an item on RecyclerView?如何正确取消选择 RecyclerView 上的项目?
【发布时间】:2019-04-11 15:57:50
【问题描述】:

我遵循了这个答案: https://stackoverflow.com/a/30046476/8793443 并让它工作:一次只选择一个项目(这是我想要的)。

但是,当第二次单击同一项目时,它仍保持选中状态。如何取消选择它以使其恢复到原来的颜色背景?

感谢任何帮助。 谢谢!

【问题讨论】:

  • 您是否尝试过使用 isSelected()?
  • 是的。不幸的是,我还没有弄清楚如何使它工作,因为它在我的链接中的示例中完成的方式。也就是说,notifyItemChanged(selectedPos) 被使用了两次(一次使用前一个位置,然后使用当前位置)。 However, when the same item is selected, onBindViewHolder only gets called once.你如何建议使用isSelected()

标签: android android-recyclerview


【解决方案1】:

OnClick 事件必须改为:

@Override
public void onClick(View view) {
  if (selectedPos == getAdapterPosition()) {
    selectedPos = RecyclerView.NO_POSITION;
    notifyDataSetChanged();
    return;
  }
  selectedPos = getAdapterPosition();
  notifyDataSetChanged();
}

它就像一个魅力!感谢Quick learner's answer 的启发。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 2021-10-29
    相关资源
    最近更新 更多