I need to display the Total of all item prices in my Cart Activity in "subtotal" I still get an error :
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(double)' on a null object reference
I think it's because the subtotal declaration is wrong, but I don't know why..
my code :
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);
}
}
}
In the class MenuDetail,I get informations like item name, item price, item amount :
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();
}
}