我需要以编程方式删除循环器视图项目点击的连锁反应。这是因为我在应用程序的几个活动中重复使用了适配器,但有一个特定的活动中,项目不应该是可点击的,因此我需要删除连锁反应,否则它看起来应该在点击时做一些事情,但它不起作用。
它的唯一工作方式是删除
android:foreground="?attr/selectableItemBackground"
在视图持有者上,但正如我所说,我不能这样做,因为我正在重用它,它应该在其他几个活动中显示连锁反应。有没有办法从特定的活动中禁用它?
您应该让适配器接受一个参数,该参数决定是否显示波纹。
因此,从更改适配器构造函数开始:
MyAdapter(boolean shouldRipple)
然后您可以在onBindViewHolder
:中设置项目前景
onBindViewHolder {
itemView.setForeground(...)
}
你可以做一件事。您可以用程序设置android:foreground
,而不是用XML设置。
只要您不需要此前景(波纹效果(,只需设置null
即可。当你需要这个时,你可以用程序设置这个?attr/selectableItemBackground
。
参考这个以程序方式设置