我正在尝试实现文本计数器,在该计数器中,每个回收站视图项中的整数将递增和递减,说0到100开始,我尝试取一个整数,然后单击按钮,我做了i ++,但是这里的问题是当我单击按钮时,该整数仅限于recyclerview项的特定位置,它实际上使整数递增,但是同时,当我单击另一项的按钮时,文本计数器从已设置的整数开始。
这是我的回收站视图类:
public class Mainadapter extends RecyclerView.Adapter<Mainadapter.exViewHolder> {
List<OrderItemFragment.Ex> exList;
Context mContext;
AlertDialog levelDialog;
int i=0;
boolean a = false;
FirebaseFirestore db = FirebaseFirestore.getInstance();
Mainadapter(List exList, Context context) {
this.exList= exList;
this.mContext = context;
}
public static class exViewHolder extends RecyclerView.ViewHolder{
TextView exname;
ImageView exlogo,attach;
TextView tv;
ImageView add,sub;
exViewHolder(View itemView){
super(itemView);
exname= itemView.findViewById(R.id.menuname);
exlogo=itemView.findViewById(R.id.imgmenu);
attach=itemView.findViewById(R.id.attach);
tv=itemView.findViewById(R.id.tvqty);
add=itemView.findViewById(R.id.additem);
sub=itemView.findViewById(R.id.removeitem);
}
}
@Override
public Mainadapter.exViewHolder onCreateViewHolder(ViewGroup parent, int viewType){
View viewthigh= LayoutInflater.from(parent.getContext()).inflate(R.layout.menu_item,parent,false);
Mainadapter.exViewHolder evh=new Mainadapter.exViewHolder(viewthigh);
return evh;
}
@Override
public void onBindViewHolder(final Mainadapter.exViewHolder holder, final int position){
holder.exname.setText(exList.get(position).name);
holder.exlogo.setImageResource(exList.get(position).logoId);
holder.attach.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(mContext,"Attach Clicked",Toast.LENGTH_LONG).show();
}
});
holder.add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (i!=0&&a==false){
i=0;
a=false;
}
else {
holder.tv.setText(String.valueOf(i++));
}
}
});
holder.sub.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
holder.tv.setText(String.valueOf(i--));
}
});
}
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView){
super.onAttachedToRecyclerView(recyclerView);
}
@Override
public int getItemCount() {
return exList.size();
}
只是无法弄清楚单击时重置整数的逻辑,因此任何建议都会受到赞赏。
答案 0 :(得分:1)
可以通过在名为“ OrderItemFragment.Ex”的列表模型类中再添加一个int变量来实现。
现在,您在recyclerview中的每个项目都有单独的计数器。
假设您在“ OrderItemFragment.Ex”中具有“ count”变量。 因此,您可以执行以下操作:
holder.add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int i = exList.get(position).count;
holder.tv.setText(String.valueOf(i++));
exList.get(position).count = i;
}
});
holder.sub.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int i = exList.get(position).count;
holder.tv.setText(String.valueOf(i--)); exList.get(position).count = i;
}
});
答案 1 :(得分:0)
保留整数数组,而不只是变量i,并保留项目列表的大小:
int [] i = new Int [exList.size()];
并且每次要增加而不是i++
时,请使用i[position] ++