我正在从事基于购物车项目的项目。我必须在其中增加/减少订单项目数量两个按钮。每件事都很好,但是在特定项目的增加/减少值上,它不能从1开始计数。它可以得到以前的计数值。
屏幕截图
这是我的RecyclerAdapter
代码。
public class CheckOutAdapter extends RecyclerView.Adapter<CheckOutAdapter.MyVHolder> {
ArrayList<CartModel> itemsList;
Context context;
OnItemClickListner mListner;
int quantity;
public CheckOutAdapter(ArrayList<CartModel> itemsList, Context context) {
this.context = context;
this.itemsList = itemsList;
}
@NonNull
@Override
public MyVHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.inflator_for_checkoutfrag, parent, false);
return new MyVHolder(itemView);
}
@Override
public void onBindViewHolder(@NonNull final MyVHolder holder, int position) {
/*holder.catgry_txt_title.setText(itemsList.get(position).title);
holder.catgry_img.setImageResource(itemsList.get(position).img);*/
holder.itemName.setText(itemsList.get(position).CartIteMname);
holder.itemPartNo.setText(itemsList.get(position).cartItemno);
holder.finalprice.setText(String.format("%s $", itemsList.get(position).totalprice));
Picasso.with(context).load(itemsList.get(position).carPart_imgURL).into(holder.itemIMG);
quantity = Integer.parseInt(itemsList.get(position).cartQuantity);
if (quantity == 1) {
holder.txtQuantity.setText(String.valueOf(quantity));
}
holder.btnIncrease.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//int count= Integer.parseInt(String.valueOf(holder.txtQuantity.getText()));
quantity++;
holder.txtQuantity.setText(String.valueOf(quantity));
}
});
holder.btnDecrease.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int count= Integer.parseInt(String.valueOf(holder.txtQuantity.getText()));
if (quantity>1)
quantity--;
holder.txtQuantity.setText(String.valueOf(quantity));
}
});
}
@Override
public int getItemCount() {
Log.e("adapterLSize",String.valueOf(itemsList.size()));
return itemsList.size();
}
class MyVHolder extends RecyclerView.ViewHolder {
ImageView itemIMG, removeCart, btnIncrease, btnDecrease;
TextView cartItemTitle, itemName, itemPartNo, finalprice, txtQuantity;
LinearLayout addtoCart;
MyVHolder(View itemView) {
super(itemView);
cartItemTitle = itemView.findViewById(R.id.cartItemTitle);
itemName = itemView.findViewById(R.id.itemName);
itemPartNo = itemView.findViewById(R.id.itemPartNo);
finalprice = itemView.findViewById(R.id.finalprice);
itemIMG = itemView.findViewById(R.id.itemIMG);
txtQuantity = itemView.findViewById(R.id.txtQuantity);
btnIncrease = itemView.findViewById(R.id.btnIncrease);
btnDecrease = itemView.findViewById(R.id.btnDecrease);
removeCart = itemView.findViewById(R.id.removeCart);
}
}
}
我的问题:
答案 0 :(得分:0)
在增加的onClick
中,您直接使用所有项目共有的quantity
变量。这意味着它可以压下的物品的数量可以是另一物品的数量。
要减小,您要在减小之前将其正确设置为该特定项目的当前值。增加同样的操作即可解决。尽管您似乎出于某种原因对此行发表了评论?
一种更好的方法是从itemsList
中获取相应的项目,并递增或递减cartQuantity
变量,然后使用它。当前解析显示的文本的方法是一种非常round回的跟踪方式。
答案 1 :(得分:0)
这是您在寻找/ *数量* /
方法的代码public void Positive(视图){/ *致电+ * / 字符串a = display Integer.get Text()。to String()。trim(); int ab = Integer.parseInt(a); abfg = abfg + 1; display(abfg);
}
public void reductionNegative(View view){/ call-- / 字符串bcd = displayInteger.getText()。toString()。trim(); int vc = Integer.parseInt(bcd); Toast.makeText(getApplicationContext(),String.valueOf(vc),Toast.LENGTH_LONG).show(); if(vc> 1){
vc = vc-1; }
/ * if(vc <0){vc = 1; } * / display(vc); }
private void display(int number){//显示displayInteger.setText(“” + number); text = displayInteger.getText()。toString();量化= Integer.parseInt(文本); }
答案 2 :(得分:0)
您也可以使用com.cepheuen.elegantnumberbutton.view.ElegantNumberButton
来自GitHub。
然后将其添加到您的Gradle实现中:
com.cepheuen.elegant-number-button:lib:1.0.2
答案 3 :(得分:0)
您只需要这样做:
myViewHolder.btnIncrease.setOnClickListener(new View.OnClickListener() {
@SuppressLint("SetTextI18n")
@Override
public void onClick(View v) {
int count= Integer.parseInt(String.valueOf(myViewHolder.tvQuantity.getText()));
count++;
myViewHolder.tvQuantity.setText("" + count);
}
});
myViewHolder.btnDecrease.setOnClickListener(new View.OnClickListener() {
@SuppressLint("SetTextI18n")
@Override
public void onClick(View v) {
int count= Integer.parseInt(String.valueOf(myViewHolder.tvQuantity.getText()));
if (count == 1) {
myViewHolder.tvQuantity.setText("1");
} else {
count -= 1;
myViewHolder.tvQuantity.setText("" + count);
}
}
});