Checkbox unchecked after scrolling down and scrolling up, also if i checked one item another item will be checked automatically in lower part of the page.i followed many tutorial but nothing worked for me, someone please help me, i'm stuck with this problem so long. here is my adapter code.
private Context mCtx;
private List<TasModel> tasList;
SparseBooleanArray itemStateArray= new SparseBooleanArray();
Tasadapter() {
}
public Tasadapter(Context mCtx, List<TasModel> tasList) {
this.mCtx = mCtx;
this.tasList = tasList;
}
@NonNull
@Override
public TasviewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int position) {
LayoutInflater inflater =LayoutInflater.from(mCtx);
View view = inflater.inflate(R.layout.tas_list,null);
TasviewHolder holder =new TasviewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull final TasviewHolder tasviewHolder, int position) {
//tasviewHolder.setIsRecyclable(false);
tasviewHolder.bind(position);
}
@Override
public int getItemCount() {
return tasList.size();
}
class TasviewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
TextView name, roll;
CheckBox checkBox;
public TasviewHolder(@NonNull View itemView) {
super(itemView);
name =itemView.findViewById(R.id.tasName);
roll =itemView.findViewById(R.id.tasRoll);
checkBox =itemView.findViewById(R.id.tasBox);
itemView.setOnClickListener(this);
}
void bind(int position) {
if (!itemStateArray.get(position, false)) {
checkBox.setChecked(false);}
else {
checkBox.setChecked(true);
}
checkBox.setText(String.valueOf(tasList.get(position).getPosition()));
TasModel tasModel =tasList.get(position);
name.setText(tasModel.getName());
roll.setText(tasModel.getRoll());
}
@Override
public void onClick(View v) {
int adapterPosition = getAdapterPosition();
if (tasList.get(adapterPosition).getChecked()) {
checkBox.setChecked(false);
tasList.get(adapterPosition).setChecked(false);
}
else {
checkBox.setChecked(true);
tasList.get(adapterPosition).setChecked(true);
}
}
}
}