Java 在recyclerview(cardview的)中单击按钮增加计数器

Java 在recyclerview(cardview的)中单击按钮增加计数器,java,android,android-recyclerview,android-adapter,android-cardview,Java,Android,Android Recyclerview,Android Adapter,Android Cardview,我正在使用RecyclerView开发应用程序。我在每张卡上都有一个按钮,当点击时,它会计算点击次数,并在特定卡的文本视图中显示。应用程序在我运行时崩溃(逻辑错误)。我做错了什么? (我想在模型中设置计数器=计数器时选中复选框true) 公共类MorAdapter扩展了RecyclerView.Adapter{ 私有ArrayList模型=新ArrayList(); 公共MorAdapter(ArrayList模型、上下文){ this.model=模型; } @凌驾 public HViewh

我正在使用RecyclerView开发应用程序。我在每张卡上都有一个按钮,当点击时,它会计算点击次数,并在特定卡的文本视图中显示。应用程序在我运行时崩溃(逻辑错误)。我做错了什么? (我想在模型中设置计数器=计数器时选中复选框true)

公共类MorAdapter扩展了RecyclerView.Adapter{
私有ArrayList模型=新ArrayList();
公共MorAdapter(ArrayList模型、上下文){
this.model=模型;
}
@凌驾
public HViewholder onCreateViewHolder(@NonNull ViewGroup父级,int viewType){
LayoutInflater LayoutInflater=LayoutInflater.from(parent.getContext());
视图v=布局更平坦。充气(R.layout.mor_项,父项,false);
返回新的HVIewolder(v);
}
@凌驾
public void onBindViewHolder(@NonNull MorAdapter.HViewholder holder,int位置){
holder.plusbtn.setOnClickListener(新视图.OnClickListener(){
整数计数=0;
@凌驾
公共void onClick(视图v){
计数++;
holder.plustext.setText(Integer.toString(count));
if(count==model.get(position.getCounter()){
holder.checkBox.setChecked(true);}
}
});
}
@凌驾
public int getItemCount(){
返回model.size();
}
类HViewholder扩展了RecyclerView.ViewHolder{
text视图plustext;
圆形按钮加上;
复选框;
HViewholder(视图项视图){
超级(项目视图);
plusbtn=itemView.findviewbyd(R.id.pluss);
plustext=itemView.findviewbyd(R.id.plustext);
checkBox=itemView.findviewbyd(R.id.checkk);
}
}

}

因为您将“计数器”声明为全局计数器,所以必须将计数器添加到您的模型中

当前计数
属性添加到您的模型中
ZekeritemModel
所以你的模特成了

公共类ZekeritemModel{
……你的密码
.... 
int currentCount=0;
//添加你的getter和setter。。
}
将您的onBind更改为


@凌驾
public void onBindViewHolder(@NonNull MorAdapter.HViewholder holder,int位置){
//获取当前项目
最终ZekeritemModel项=model.get(位置);
int count=item.getCurrentCount();
//设置textview内计数器的值
holder.plustext.setText(Integer.toString(count));
holder.plusbtn.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
计数++;
项。设置当前计数(计数);
holder.plustext.setText(Integer.toString(count));
if(count==model.get(position.getCounter()){
holder.checkBox.setChecked(true);}
}
});
}

注意可能会编写一些输入错误或遗漏一些点击、空格、括号(因为我现在没有IDE)。

你能添加logcat吗?这是逻辑错误,当我单击卡中的btn时(1),然后单击卡上的btn时(2)计数器从2开始,而不是1为你的应用程序提供GIF尝试使其计数=计数+1而不是计数++不工作,但谢谢你试图帮助我。你不理解我,我想当点击每张卡中的btn时,文本中的计数器等于模型中的计数器时,复选框为true,但现在当我点击卡中的btn时,然后点击另一张卡,文本中的计数器从2开始,而不是1你的计数器是全局的,每次单击都会增加计数器值。您必须删除计数器作为全局变量,并将其添加到您的模型中。您可以显示示例吗?因为我试了很多次
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);
    }
}