Объявите публичную логическую переменную в вашем адаптере и установите для нее значение по умолчанию false;
public boolean clicked = false
внутри onBindViewHolder
check if (clicked) myHolder.btn.setEnabled(false); else myHolder.btn.setEnabled(true)
и вваш метод щелчка clicked = true
и вызов notifyDataSetChanged()
, это отключит все кнопки,
, если вы хотите отключить все остальные кнопки (кроме этой), используйте целочисленную переменную вместо логического значенияpublic Integer clickedPosition = null
и отметьте if (clickedPosition != null && clickedPosition != getAdapterPosition) myHolder.btn.setEnabled(false); else myHolder.btn.setEnabled(true);
, и в вашем методе щелчка установите clickedPosition = getAdapterPosition
и вызовите notifyDataSetChanged()
public Integer clickedPosition;
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view=inflater.inflate(R.layout.container_fish, viewGroup,false);
MyHolder holder=new MyHolder(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, final int i) {
final MyHolder myHolder= (MyHolder) viewHolder;
final DataFish current=data.get(i);
myHolder.textFishName.setText(current.fishName);
myHolder.textSize.setText("Size: " + current.sizeName);
myHolder.textType.setText("Category: " + current.catName);
if(clickedPosition!=null && clickedPosition!=getAdapterPosition()) myHolder.btn.setEnabled(false);
else myHolder.btn.setEnabled(false);
myHolder.btn.setOnClickListener( new View.OnClickListener() {
@TargetApi(Build.VERSION_CODES.N)
@Override
public void onClick(View v) {
clickedPosition = getAdapterPosition();
notifyDatasetChanged();
//code here
}
} );
myHolder.btn1.setOnClickListener( new View.OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
public void onClick(View v) {
//code here
}
} );
myHolder.btn2.setOnClickListener( new View.OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
public void onClick(View v) {
clickedPosition = null;
notifyDatasetChanged();
//code here
}
} );