我正在开发一个简单的购物车应用,它将在RecyclerView中显示购物车详情。 在这里,我将减少数量值到1。该商品将从商品适配器中删除。这个功能很好运行。 但是当我尝试减少第二个商品的数量值时,它会在没有检查条件的情况下被移除。 我的条件是如果数量低于1,则该商品将被删除。
ItemAdapter.java
public class ItemAdapter extends RecyclerView.Adapter<ItemAdapter.ViewHolder> {
Context context;
ArrayList<ItemData> itemDataList;
int quantity,t_amount;
totalAmount totalAmount;
public ItemAdapter(Context context, ArrayList<ItemData> itemDataList) {
this.context = context;
this.itemDataList = itemDataList;
totalAmount = (ItemAdapter.totalAmount) context;
}
@NonNull
@Override
public ItemAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_details,parent,false);
return new ViewHolder(itemView);
}
@Override
public void onBindViewHolder(@NonNull final ViewHolder holder, final int pos) {
ItemData itemData = itemDataList.get(pos);
holder.txtPrice.setText(itemData.getPrice());
holder.txtDesc.setText(itemData.getDescription());
holder.txtCartCount.setText(itemData.getCartCount());
holder.btnCartDec.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(quantity <= 1){
itemDataList.remove(holder.getAdapterPosition());
notifyItemRemoved(holder.getAdapterPosition());
notifyItemRangeChanged(holder.getAdapterPosition(),itemDataList.size());
}else {
quantity = Integer.parseInt(itemDataList.get(pos).getCartCount());
quantity = quantity-1;
itemDataList.get(pos).setCartCount(String.valueOf(quantity));
notifyDataSetChanged();
holder.txtCartCount.setText(String.valueOf(quantity));
}
}
});
holder.btnCartInc.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
quantity = Integer.parseInt(itemDataList.get(pos).getCartCount());
quantity = quantity+1;
itemDataList.get(pos).setCartCount(String.valueOf(quantity));
notifyDataSetChanged();
holder.txtCartCount.setText(String.valueOf(quantity));
}
});
}
@Override
public int getItemCount() {
return itemDataList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
TextView txtPrice, txtDesc, txtCartCount, btnCartDec, btnCartInc;
public ViewHolder(@NonNull View itemView) {
super(itemView);
txtPrice = itemView.findViewById(R.id.itemView_price);
txtDesc = itemView.findViewById(R.id.itemView_desc);
txtCartCount = itemView.findViewById(R.id.itemView_Count);
btnCartDec = itemView.findViewById(R.id.itemViewDec);
btnCartInc = itemView.findViewById(R.id.itemViewInc);
}
}
public interface totalAmount{
void t_amount(int amount);
}
}