android - 更改 View 在 recyclerview 的所有项目中的可见性

标签 android android-recyclerview

我的 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() 中只需使用该标志来设置可见性。

您也可以尝试创建CheckBoxesHolders 的集合,然后长按迭代它们以使复选框可见。对我来说,这不是最坏的选择。

如果您不想为此设置一个循环,我看到的另一种方法是实现 Observer模式 - 在创建复选框时,您应该将其添加为订阅者以接收可见性通知。

这里也很有可能使用RX:
- 长按会发出事件
- 在您订阅该事件的复选框之前。
它也与 Observer 模式有关。

关于android - 更改 View 在 recyclerview 的所有项目中的可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44996189/

相关文章:

android - 在 Android 中上传到 App Engine Blob 存储

java - Android应用程序无法将数据写入Firebase数据库

android - RecyclerView 回到位置 0

java - 无法设置带有文本标题的工具栏?

java - 限制在Android移动模拟器上运行Android应用程序

android - 将代码转换为Kotlin后弃用Getter

android - Recyclerview 项目颜色根据文本变化

java - RecyclerView : Inconsistency detected. 项目位置无效 - 为什么会这样?

android - 如何以编程方式水平滚动 RecyclerView?

android - 使用对话框时背景模糊