提问人:Abm 提问时间:10/7/2022 更新时间:10/7/2022 访问量:27
Android RecyclerView 恢复对象中的状态
android recyclerview restoring state in object
问:
该应用程序的功能类似于购物车。用户可以通过单击相应的按钮来添加产品并增加/减少数量。默认情况下,数量值设置为 1。每当用户将新产品添加到recyclerview时,我都会遇到一个问题,以前的产品数量也更改为1。如何避免这种情况?如何恢复对象中的状态(递增/递减值)?
@Override
public void onBindViewHolder(@NonNull RVOrderBrdAdapter.RVViewHolder holder, int position) {
//getting the product of the specified position
OrderBrdDataModel product = filteredList.get(position);
//binding the data with the viewholder views
double org_p = product.getBrdprice();
holder.brd_value.setText(String.valueOf(product.getBrdprice()));
holder.brd_product.setText(product.getBrdname());
holder.brd_quantity.setText("1");
holder.brd_increment.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
number = Integer.parseInt(""+holder.brd_quantity.getText().toString());
if(holder.brd_quantity.getText().toString().equals("")){
Toast.makeText(v.getContext(), "Quantity cannot be empty", Toast.LENGTH_SHORT).show();
}else if(number >=9999){
Toast.makeText(v.getContext(), "Quantity cannot be greater than 9999", Toast.LENGTH_SHORT).show();
}else{
number++;
}
holder.brd_quantity.setText(""+number);
double iw = Double.parseDouble(String.format("%.2f",(org_p*number)));
holder.brd_value.setText(String.valueOf (iw));
}
});
holder.brd_decrement.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
number = Integer.parseInt(""+holder.brd_quantity.getText().toString());
if(holder.brd_quantity.getText().toString().equals("")){
Toast.makeText(v.getContext(), "Quantity cannot be empty", Toast.LENGTH_SHORT).show();
}else if(number<=0){
Toast.makeText(v.getContext(), "Quantity cannot be less than 0", Toast.LENGTH_SHORT).show();
number = 0;
}else {
number--;
}
holder.brd_quantity.setText(""+number);
double dw = Double.parseDouble(String.format("%.2f",(org_p*number)));
holder.brd_value.setText(String.valueOf(dw));
}
});
答:
0赞
Björn
10/7/2022
#1
可以将数量添加到 OrderBrdDataModel 中,或将 OrderBrdDataModel 包装在类似 OrderBrdDataModelWithQuantity 中。在 OnBindViewHolder 中,使用此变量中的数量,并确保以 brd_increment/递减为单位更新数量值。
评论
0赞
Abm
10/8/2022
filteredList.get(holder.getAdapterPosition()).setBrdqty(number);notifyDataSetChanged();这是我写的,但它不起作用。
评论