java - 从 RecycleView 中删除项目
问题描述
我想从购物车中删除一个项目。在这种情况下,购物卡列表是RecycleView
。当我仍在购物车活动中时,该项目已成功删除,但当我通过更改活动BottomNavigationView
并返回购物车活动时,该项目再次出现。有人知道这个问题吗?我感谢任何答案,谢谢。
PS对不起英语不好
这是我的代码片段
holder.trashIcon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mReceiptList.remove(holder.getAdapterPosition());
notifyItemRemoved(holder.getAdapterPosition());
notifyItemRangeChanged(holder.getAdapterPosition(), mReceiptList.size());
holder.itemView.setVisibility(View.GONE);
((DaftarCartFragment) fragment).calculateTotalMin();
}
});
更新
这是完整的代码,包括 mReceiptList 的用法
package tech.agronum.kitchenwaremobile.adapters;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import com.google.gson.Gson;
import org.w3c.dom.Text;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.List;
import tech.agronum.kitchenwaremobile.R;
import tech.agronum.kitchenwaremobile.fragments.cart.DaftarCartFragment;
import tech.agronum.kitchenwaremobile.models.Mobile.Product.Product;
import tech.agronum.kitchenwaremobile.models.Mobile.Product.Receipt;
public class RecycleViewCartAdapter extends RecyclerView.Adapter<RecycleViewCartAdapter.RecyclerVH> {
public static List<Receipt> mReceiptList = null;
Product inventory;
String[] spacecrafts;
Context context;
FragmentManager fragmentManager;
private int add = 0;
private int subtract = 0;
Fragment fragment;
SharedPreferences preferences;
public RecycleViewCartAdapter(List<Receipt> receipt, FragmentManager _fragmentManager, Fragment _fragment) {
mReceiptList = receipt;
fragmentManager = _fragmentManager;
fragment = _fragment;
}
// Fungsi Hitung
public Integer getQuantityPrice(int i) {
return mReceiptList.get(i).getQuantity() * mReceiptList.get(i).getPrice();
}
@NonNull
@Override
public RecyclerVH onCreateViewHolder(@NonNull ViewGroup parent, int i) {
View v= LayoutInflater.from(parent.getContext()).inflate(R.layout.component_card_cart,parent,false);
return new RecyclerVH(v);
}
@Override
public void onBindViewHolder(@NonNull final RecyclerVH holder, int i) {
final Receipt receipt = mReceiptList.get(i);
final String id = receipt.getId().toString();
String produkName = receipt.getName();
String produkCode = receipt.getCode();
Integer price = receipt.getPrice();
Integer qty = receipt.getQuantity();
String condition = receipt.getCondition();
NumberFormat formatter = new DecimalFormat("#,###");
if(receipt.getId() == 0){
holder.produkName.setText("Data sudah terhapus atau tidak ada");
holder.produkCode.setText("-");
holder.price.setText("-");
} else {
try {
holder.produkName.setText(produkName);
holder.produkCode.setText(produkCode);
holder.itemCondition.setText(condition);
holder.itemQuantity.setText(qty.toString());
holder.price.setText(formatter.format(price) + "");
} catch (NullPointerException ne) {
ne.printStackTrace();
}
}
final int now = Integer.parseInt(holder.itemQuantity.getText().toString());
holder.buttonPlus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// int res;
// add++;
// res = now+ add;
// holder.itemQuantity.setText(res + "");
Integer current = Integer.parseInt(holder.itemQuantity.getText().toString());
current = current + 1;
holder.itemQuantity.setText(current.toString());
receipt.setQuantity(current);
((DaftarCartFragment) fragment).calculateTotal();
}
});
holder.buttonMinus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// int res;
// subtract++;
// res = now - subtract;
// holder.itemQuantity.setText(res + "");
Integer current = Integer.parseInt(holder.itemQuantity.getText().toString());
if(current>0) {
current = current - 1;
}
holder.itemQuantity.setText(current.toString());
receipt.setQuantity(current);
((DaftarCartFragment) fragment).calculateTotalMin();
}
});
holder.trashIcon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
holder.itemView.setVisibility(View.GONE);
((DaftarCartFragment) fragment).calculateTotalMin();
mReceiptList.remove(holder.getAdapterPosition());
notifyItemRemoved(holder.getAdapterPosition());
notifyItemRangeChanged(holder.getAdapterPosition(), mReceiptList.size());
}
});
}
@Override
public int getItemCount() {
int size = 0;
try {
size = mReceiptList.size();
} catch (NullPointerException ne) {
ne.printStackTrace();
size = 0;
} catch (Exception e) {
e.printStackTrace();
size = 0;
}
return size;
}
/*
VIEWHOLDER CLASS
*/
public class RecyclerVH extends RecyclerView.ViewHolder
{
Integer id;
TextView produkName;
TextView produkCode;
TextView category;
TextView warehouseCategory;
TextView price;
EditText itemQuantity;
Button detailButton;
TextView buttonPlus;
TextView buttonMinus;
TextView itemCondition;
ImageView trashIcon;
// ImageView imageView;
public RecyclerVH(View itemView) {
super(itemView);
produkName = (TextView) itemView.findViewById(R.id.item_name);
produkCode = (TextView) itemView.findViewById(R.id.product_code);
category = (TextView) itemView.findViewById(R.id.product_category);
warehouseCategory = (TextView) itemView.findViewById(R.id.product_warehouseCategory);
price = (TextView) itemView.findViewById(R.id.product_price);
itemQuantity = (EditText) itemView.findViewById(R.id.item_quantity);
buttonPlus = (TextView) itemView.findViewById(R.id.item_quantity_button_plus);
buttonMinus = (TextView) itemView.findViewById(R.id.item_quantity_button_minus);
detailButton = (Button) itemView.findViewById(R.id.product_detail_button);
itemCondition = (TextView) itemView.findViewById(R.id.item_condition);
trashIcon = (ImageView) itemView.findViewById(R.id.trash_icon);
//imageView = (ImageView)itemView.findViewById(R.id.productImage);
}
}
}
解决方案
推荐阅读
- musicbrainz - 在 MusicBrainz 中获取官方发布 id
- python - 添加非主键 Alembic 的自动增量列
- tensorflow - 基于过去和未来值的每个时间序列步骤的二进制分类
- php - 日志解析器 - 扩展
- javascript - 确定日期是否在 Angular/Javascript 中的周末
- php - 如何在 Laravel 5.5 的 URL 验证中传递 %?
- powershell - 将变量传递给 Invoke-Command、inlineScript 内部、工作流内部
- javascript - 算法的时间复杂度
- tflearn - tflearn - 嵌入层中的快速文本词向量错误
- java - 在开关情况下使用枚举但不作为开关参数