单击任何一张卡片后,我需要将回收器视图(使用 RecyclerView 适配器类)中所有卡片的 Clickable 属性设置为 false。我怎么做?设置 holder.cardView.setClickable(false) 只对被点击的人起作用。如何访问 OnBindViewHolder 视图中的所有卡片?
由于RecyclerView
延迟加载子视图的方式,您不能这样做。子视图仅在它们在屏幕上可见时创建和呈现,其他视图被清除以节省内存。
您可以执行以下操作以获得相同的效果:
1/FrameLayout
在您的 之上创建一个叠加层RecyclerView
,将其设置clickable
为 true,然后在需要时显示/隐藏它以防止触摸
<FrameLayout>
<RecyclerView ... />
<FrameLayout
android:id="@+id/overlay_view"
...
android:clickable="true" />
</FrameLayout>
cardItem.setOnClickListener(view -> {
// The mOverlayView will intercept all the touch event on RecyclerView
mOverlayView.setVisibility(View.VISIBLE);
})
2/ 创建一个boolean preventClick
变量,当你想阻止用户点击时将其设置为true。然后在您的项目的 OnClickListener 中检查此值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句