Increment counter with button click in recyclerview ( of cardview )

I am working on app that using RecyclerView. I have a Button in each card that when clicked, will count the number of clicks and display it in a TextView in that particular card. The app crashes (Logic Error ) when I run it. What am I doing wrong ? ( I want to setcheck the check box true when counter = counter in Model )

public class MorAdapter extends RecyclerView.Adapter<MorAdapter.HViewholder> {  private ArrayList<ZekeritemModel> model=new ArrayList<>();      public MorAdapter(ArrayList<ZekeritemModel> models,Context context) {     this.model = models; } @Override public HViewholder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {     LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());     View v = layoutInflater.inflate(R.layout.mor_items, parent, false);       return new HViewholder(v); }     @Override public void onBindViewHolder(@NonNull MorAdapter.HViewholder holder, int position) {       holder.plusbtn.setOnClickListener(new View.OnClickListener() {          int count =0;         @Override         public void onClick(View v) {             count++;             holder.plustext.setText(Integer.toString(count));             if (count==model.get(position).getCounter()){                 holder.checkBox.setChecked(true);}                                     }     }); } @Override public int getItemCount() {     return model.size(); }   class HViewholder extends RecyclerView.ViewHolder {   TextView  plustext;   CircleButton plusbtn;   CheckBox checkBox;         HViewholder(View itemView) {         super(itemView);         plusbtn=itemView.findViewById(R.id.pluss);         plustext=itemView.findViewById(R.id.plustext);         checkBox=itemView.findViewById(R.id.checkk);     } } 

}

Add Comment
2 Answer(s)

add currentCount property to your model ZekeritemModel so your model became

public class ZekeritemModel { .... your code  ....   int currentCount = 0;  // add your getter and setter ..  }   

change your onBind to

 @Override public void onBindViewHolder(@NonNull MorAdapter.HViewholder holder, int position) {     // get current item     final ZekeritemModel item = model.get(position);     int count = item.getCurrentCount();     // set value of counter inside textview     holder.plustext.setText(Integer.toString(count));      holder.plusbtn.setOnClickListener(new View.OnClickListener() {         @Override         public void onClick(View v) {             count++;             item.setCurrentCount(count);             holder.plustext.setText(Integer.toString(count));             if (count==model.get(position).getCounter()){                 holder.checkBox.setChecked(true);}                                     }     }); }   

NOTE may code some typo or miss some taps, spaces, parenthesis (as i Have no IDE now).

Add Comment

Because you declared "counter" as global , you must to add counter to your model

Answered on July 16, 2020.
Add Comment

Your Answer

By posting your answer, you agree to the privacy policy and terms of service.