Привет, ребята, я работаю над приложением в магазине, и я обнаружил проблему с добавлением товаров в корзину, проблема в том, что я добавляю 1 товар, он добавлялся, но добавление более одного не работало, только последний продукт, который я добавьте, я использую общие настройки и его работу, когда закрываю приложение и переключаюсь между действиями, элемент остается в активности корзины, но проблема заключается в большем количестве элементов.
ProductView Activity
addToCart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (cartList == null) {
cartList = new ArrayList<>();
}
cartClass product = new cartClass(b.getString("ItemTitle"), b.getString("ItemPrice"), b.getInt("ItemImage"));
cartList.add(product);
saveItems();
}
}
public void saveItems()
{
SharedPreferences sharedPreferences = getSharedPreferences("shared preferences",MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
Gson gson = new Gson();
String json = gson.toJson(cartList);
editor.putString("CartList",json);
editor.apply();
}
Активность корзины
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cart);
ItemsAddedToCart = findViewById(R.id.itemsAddRV);
Total = findViewById(R.id.TotalPrice);
buy = findViewById(R.id.buy_);
back = findViewById(R.id.back_b);
home = findViewById(R.id.floatingHome);
loadItems();
fillCart = new FillCart(this, cartList, Total);
ItemsAddedToCart.setAdapter(fillCart);
ItemsAddedToCart.setLayoutManager(new LinearLayoutManager(this));
i++;
}
public void loadItems()
{
SharedPreferences sharedPreferences = getSharedPreferences("shared preferences",MODE_PRIVATE);
Gson gson = new Gson();
String json = sharedPreferences.getString("CartList",null);
Type type = new TypeToken<ArrayList<cartClass>>() {}.getType();
cartList = gson.fromJson(json,type);
if(cartList == null)
{
cartList = new ArrayList<>();
}
}
Встроенный адаптер корзины
@Override
public void onBindViewHolder(@NonNull final RecyclerView.ViewHolder holder, final int position) {
cartClass cart = cartList.get(position);
((ViewHodler) holder).image.setImageResource(cart.getImage());
((ViewHodler) holder).title.setText(cart.getTitle());
((ViewHodler) holder).price.setText(cart.getPrice());
}