我的 recyclerview 项目中有一个 CheckBox,可见性消失了。当我长按其中一个项目时,我想让它对 recyclerview 中的所有项目可见。所以我这样做了:
holder.faviorateVideoItemRelative.setOnLongClickListener(new View.OnLongClickListener() {
public boolean onLongClick(View arg0) {
holder.chk_faviorateVideo.setVisibility(View.VISIBLE);
// holder.chk_faviorateVideo.setChecked(!holder.chk_faviorateVideo.isChecked());
return true ;
}
});
但这将使 CheckBox 仅对当前项目可见。 我什至将我的代码移到了我的 ViewHolder 类中,但没有任何改变。如果没有循环或重新绘制 recyclerview,我该怎么做? 我需要做一些像 android 的默认文件管理器长按和选择。 提前致谢 。
最佳答案
您的 Holder
仅持有当前项目,这就是为什么您仅在该项目中看到结果的原因。
第一个选项只是制作一些 bool 标志并调用 notifyDataSetChanged()
,在 onBindViewHolder()
中只需使用该标志来设置可见性。
您也可以尝试创建CheckBoxes
或Holders
的集合,然后长按迭代它们以使复选框可见。对我来说,这不是最坏的选择。
如果您不想为此设置一个循环,我看到的另一种方法是实现 Observer模式 - 在创建复选框时,您应该将其添加为订阅者以接收可见性通知。
这里也很有可能使用RX:
- 长按会发出事件
- 在您订阅该事件的复选框之前。
它也与 Observer
模式有关。
关于android - 更改 View 在 recyclerview 的所有项目中的可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44996189/