我需要在“小计”中显示我的购物车 Activity 中所有商品价格的总和 我仍然收到错误:
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(double)' on a null object reference
我认为这是因为小计声明错误,但我不知道为什么..
我的代码:
public class CartAdapter extends RecyclerView.Adapter<CartAdapter.CartViewHolder>
{
Context context ;
private List<Cart> cartList;
private double price;
public CartAdapter(Context context, List<Cart> cartList) {
this.context = context;
this.cartList = cartList;
}
@NonNull
@Override
public CartViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(context).inflate(R.layout.cart_item_layout, parent, false);
// CartViewHolder viewHolder = new CartViewHolder(itemView, mData);
return new CartViewHolder(itemView);
}
@Override
public void onBindViewHolder(@NonNull CartViewHolder holder, final int position) {
double price = (Double.parseDouble(String.valueOf(cartList.get(position).price))
* Double.parseDouble(cartList.get(position).amount));
holder.cart_menu_amount.setText(new StringBuilder(cartList.get(position).amount).append(" x"));
holder.menu_name.setText(cartList.get(position).name);
// holder.menu_price.setText((new StringBuilder(String.valueOf(cartList.get(position).price))));
holder.menu_price.setText(new StringBuilder(String.valueOf(price)).append(" €"));
double subTotal = 0;
subTotal += (Double.parseDouble(String.valueOf(cartList.get(position).price))
* Double.parseDouble(cartList.get(position).amount));
holder.total_price_cart.setText((int) subTotal);
}
@Override
public int getItemCount() {
return cartList.size();
}
public class CartViewHolder extends RecyclerView.ViewHolder {
TextView menu_name;
TextView menu_price;
TextView cart_menu_amount;
TextView total_price_cart;
public CartViewHolder(View itemView) {
super(itemView);
total_price_cart = (TextView)itemView.findViewById(R.id.total_price_cart);
menu_name = (TextView)itemView.findViewById(R.id.cart_name);
menu_price= (TextView)itemView.findViewById(R.id.cart_price);
cart_menu_amount= (TextView) itemView.findViewById(R.id.cart_menu_amount);
}
}
}
在MenuDetail类中,我获取诸如商品名称、商品价格、商品金额等信息:
Button btn_add_cart = (Button) findViewById(R.id.btn_add_cart);
btn_add_cart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
try {
Cart cartItem = new Cart();
cartItem.name = menu_name.getText().toString();
cartItem.price = menu_price.getText().toString();
cartItem.amount = menu_amount.getNumber();
cartItem.comment = edit_comment.getText().toString();
// Common.toppingAdded.add(menu_name.getText().toString());
// Common.cartPrice+=Double.parseDouble(optionList.get(position).Price);
double price = (Double.parseDouble((String) menu_price.getText())
* Double.parseDouble(String.valueOf(menu_amount.getNumber())));
double finalPrice = price;
cartItem.totalPrice = finalPrice;
// Add to DB
Common.cartRepository.insertToCart(cartItem);
Log.d("NOW_DEBUG", new Gson().toJson(cartItem));
Toast.makeText(MenuDetail.this, "Ajouté !", Toast.LENGTH_SHORT).show();
} catch (Exception ex)
{
Toast.makeText(MenuDetail.this, ex.getMessage(), Toast.LENGTH_SHORT).show();
}
(MenuDetail.this).finish();
}
}
最佳答案
检查您正在使用调试器设置小计的 textView,它可能未附加到您的 xml View 。 也改一下
holder.total_price_cart.setText((int) subTotal);
到
holder.total_price_cart.setText(String.valueOf(subTotal));
settext 方法中期望的类型是字符串。
希望有帮助。
关于java - 如何计算总项目的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53809285/