Вероятно, самый простой способ полностью заблокировать взаимодействие с чем-либо внутри одного элемента - это создать прозрачный вид на него, который перехватывает все сенсорные события.Вы могли бы сделать это, обернув существующий макет itemView
в FrameLayout
и добавив к нему еще одно представление:
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!-- your itemView content here -->
<View
android:id="@+id/overlay"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</FrameLayout>
Внутри onCreateViewHolder()
, вы можете назначить прослушиватель щелчка без операциина оверлей:
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
View itemView = inflater.inflate(R.layout.itemview, parent, false);
MyViewHolder holder = new MyViewHolder(itemView);
holder.overlay.setOnClickListener(v -> {});
return holder;
}
Теперь, когда вы хотите отключить щелчки, вы можете позвонить
holder.overlay.setVisibility(View.VISIBLE);
, а когда вы хотите отключить их, вы можете позвонить
holder.overlay.setVisibility(View.GONE);