У меня есть одно мероприятие под названием корзина (Корзина). Я использую SQLite для хранения элементов и отображаю данные в RecyclerView. Моя проблема в том, когда мне нужно увеличить или уменьшить количество, потому что мой код принимает значение по умолчанию (1), а увеличение равно 2 за все время и уменьшается с 0. Мне нужно обновить базу данных. Я это знаю, но я действительно не понимаю как. Я вижу 2 варианта с Sqlexe c и ContentValues, но я действительно не знаю, как это реализовать. Если кто-то может мне помочь, я буду очень признателен. Я поместил свой класс адаптера здесь.
public class cartItemRecyclerView extends RecyclerView.Adapter<cartItemRecyclerView.ViewHolder>{
ArrayList<items> itemsList;
Context context;
interface IImageButtonListener{
void onImageButtonClick(View view,int pos,boolean isDecrease);
}
public cartItemRecyclerView(Context context, ArrayList<items> itemsList){
this.context = context;
this.itemsList = itemsList;
}
public cartItemRecyclerView(ArrayList<items> item) {
this.itemsList = item;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
Context context = parent.getContext();
LayoutInflater inflater = LayoutInflater.from(context);
// Inflate the custom layout
View contactView = inflater.inflate(R.layout.list_cart_item_view,parent,false);
// Return a new holder instance
ViewHolder viewHolder = new ViewHolder(contactView);
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
// Get the data model based on position
items itm = itemsList.get(position);
// Set item views based on your view and data model
holder.nameC.setText(itm.getlName());
holder.iconC.setImageResource(itm.getlImageId());
holder.priceC.setText(itm.getlPrice()+ "");
holder.quantityC.setText(itm.getQuantity()+"");
holder.setListener(new IImageButtonListener() {
@Override
public void onImageButtonClick(View view, int pos, boolean isDecrease) {
if(isDecrease){
int i = itemsList.get(pos).getQuantity();
i++;
// Update in database
holder.quantityC.setText(i+"");
}
else {
int i = itemsList.get(pos).getQuantity();
i--;
// Update in database
holder.quantityC.setText(i+"");
}
}
});
}
@Override
public int getItemCount() {
return itemsList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
public TextView nameC, priceC, quantityC;
public ImageView increaseC, decreaseC, iconC;
IImageButtonListener listener;
public void setListener(IImageButtonListener listener){
this.listener = listener;
}
public ViewHolder(View itemView){
super(itemView);
nameC = itemView.findViewById(R.id.name_item_cart);
priceC = itemView.findViewById(R.id.price_item_cart);
quantityC = itemView.findViewById(R.id.textview_quantity_items);
increaseC = itemView.findViewById(R.id.image_increase_quantity);
decreaseC = itemView.findViewById(R.id.image_decrease_quantity);
iconC = itemView.findViewById(R.id.icon_item_cart);
// Event
increaseC.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
listener.onImageButtonClick(v, getAdapterPosition(),true);
}
});
decreaseC.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
listener.onImageButtonClick(v, getAdapterPosition(),false);
}
});
}
}