如何正确地在RecyclerView上取消选择项目?

3
我遵循了这个答案:https://dev59.com/X14d5IYBdhLWcg3wFPM7#30046476,并且使它工作:每次只选择一个项目(这正是我想要的)。 然而,当同一项被第二次点击时,它仍然保持选定状态。我怎么取消选择,让它回到原来的背景色呢? 感谢任何帮助。 谢谢!

你尝试过使用isSelected()吗? - Ayush Khare
是的。不幸的是,我还没有想出如何使它按照我的链接中的示例方式工作。也就是说,notifyItemChanged(selectedPos)被使用了两次(一次是用之前的位置,然后是当前的位置)。然而,当选择相同的项目时,onBindViewHolder只会被调用一次。您建议如何使用isSelected() - W. Stalin R.
1个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
4

OnClick事件必须改为这样:

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

它的运作就像魔法一样!感谢Quick learner的答案给了我启示。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,