Это можно активировать разными способами. Я упомянул два способа.
//Take a class variable inside adapter.
int activeItemIndex = 0; //first item onClick enabled initially or -1 if non selected initially.
Теперь реализуем кнопку onClick, как показано ниже:
Тип 1: Используя условие внутри onClick ()
public void onBindViewHolder(....) {
viewHolder.button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(position == activeItemIndex) {
//do what you want to code here....
} //do nothing if position is not activeItemIndex so it will act like disable.
}
});
}
Тип 2: Делая onClick () другого элемента равным нулю.
public void onBindViewHolder(....) {
if(position == activeItemIndex) {
viewHolder.button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//do what you want to code here....
}
});
} else {
viewHolder.button1.setOnClickListener(null);
}
}
Теперь следующее, что вам нужно сделать, это вызвать notifyDataSetChanged () рядом с кодом, где вы будете использовать условие для изменения значения для activeItemIndex . Так что где-то в вашем коде внутри onBindViewHolder () будет фрагмент кода вроде:
...
//Updating active onClick item position based on condition
if(condition) {
activeItemIndex = position;
notifyDataSetChanged();
}
...