У меня есть два списка массивов, о которых можно упомянуть ниже.
Код: Выделить всё
public ArrayList cartList = new ArrayList();
public ArrayList designList = new ArrayList();
У меня есть два действия (см. изображения)
Это действие предназначено для отображения продуктов в recyclerview. При этом я добавил в корзину два товара.

Это мое второе действие, показывающее все товары корзины. (Пользователь также может удалять, увеличивать или уменьшать количество из этого действия.)

Теперь я хотел, чтобы, когда пользователь возвращается к первому действию, я хотел сравнить два списка, обновите количество (шт.) в designList из carsList. На снимке экрана ниже показано первое действие, когда я нажимаю «Назад» или повторно посещаю.

Это изображение должно быть похоже на первое изображение. Я поделюсь здесь своим кодом.
Design.java
Код: Выделить всё
public class Design implements Serializable {
public int id;
public String qualityId;
public String qualityName;
public String designId;
public String designName;
public String image;
public String name; //use as shade name
public String discPercent;
public String amount;
public int pcs; //consider quantity here.
}
Single_DesignAdapter.java
Код: Выделить всё
public class Single_DesignAdapter extends RecyclerView.Adapter {
public ArrayList designList;
private Context context;
private LayoutInflater layoutInflater;
public ArrayList cartList = null;
public Single_DesignAdapter(Context context, ArrayList designList) {
this.designList = designList;
this.context = context;
this.layoutInflater = LayoutInflater.from(context);
if (cartList != null) {
String cart = getSharePref(context, "cart");
Design[] designs = new Gson().fromJson(cart, Design[].class);
cartList = (ArrayList) Arrays.asList(designs);
}
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = layoutInflater.inflate(R.layout.single_design, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
final Design design = designList.get(position);
holder.tvQuality.setText(design.qualityName);
holder.tvDesign.setText(design.designName);
holder.tvShade.setText(design.name);
if (!design.discPercent.equals("0")) {
holder.tvDisPer.setText("-"+design.discPercent+"%");
holder.tvAmount.setPaintFlags(holder.tvAmount.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
int a = Integer.parseInt(design.amount);
float b = Float.parseFloat(design.discPercent) / 100;
holder.tvAmount.setText("₹ " + design.amount);
int c = (int) (a * b);
int d = a-c;
holder.tvDiscAmt.setText("₹ " +d);
Picasso.with(context).load(design.image).into(holder.ivDesign);
} else {
holder.tvAmount.setText("₹ " + design.amount);
Picasso.with(context).load(design.image).into(holder.ivDesign);
holder.tvDisPer.setVisibility(View.INVISIBLE);
holder.tvDiscAmt.setVisibility(View.INVISIBLE);
}
if (cartList != null) {
for (Design d : cartList) {
if (design.id == d.id) {
design.pcs = d.pcs;
}
}
}
if (design.pcs != 0) {
holder.llAdd.setVisibility(View.GONE);
holder.llPlusMinus.setVisibility(View.VISIBLE);
holder.btPcsCount.setText(Integer.toString(design.pcs));
}
holder.btAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
holder.llAdd.setVisibility(View.GONE);
holder.llPlusMinus.setVisibility(View.VISIBLE);
if (cartList != null) {
if (cartList.contains(design)) {
cartList.remove(design);
design.pcs = 1;
cartList.add(design);
saveSharedPref(context, "cart", new Gson().toJson(cartList));
((Activity) context).invalidateOptionsMenu();
} else {
design.pcs = 1;
cartList.add(design);
saveSharedPref(context, "cart", new Gson().toJson(cartList));
((Activity) context).invalidateOptionsMenu();
}
} else {
cartList = new ArrayList(Arrays.asList(design));
cartList.remove(design);
design.pcs = 1;
cartList.add(design);
saveSharedPref(context, "cart", new Gson().toJson(cartList));
((Activity) context).invalidateOptionsMenu();
}
}
});
holder.btPlus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (Integer.parseInt(holder.btPcsCount.getText().toString()) >= 1) {
int a = Integer.parseInt(holder.btPcsCount.getText().toString());
a++;
holder.btPcsCount.setText(Integer.toString(a));
if (cartList != null) {
if (cartList.contains(design)) {
cartList.remove(design);
design.pcs = a;
cartList.add(design);
saveSharedPref(context, "cart", new Gson().toJson(cartList));
((Activity) context).invalidateOptionsMenu();
} else {
design.pcs = a;
cartList.add(design);
saveSharedPref(context, "cart", new Gson().toJson(cartList));
((Activity) context).invalidateOptionsMenu();
}
}
}
}
});
holder.btMinus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (Integer.parseInt(holder.btPcsCount.getText().toString())
Подробнее здесь: [url]https://stackoverflow.com/questions/43471357/add-to-cart-design-working-in-android[/url]
Мобильная версия