java - 如何计算总项目的总和

标签 java android android-studio

我需要在“小计”中显示我的购物车 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/

相关文章:

java - 使用 Java 创建一个 plist

android - 在 Android SQLite 上使用扩展名 .db

android - 更改默认短信应用程序处理程序 Android Q RoleManger

android-studio - 如何在app gradle中添加linkedin sdk路径?

java - 正则表达式删除井号和双逗号java csv

java - 如何在 Android Studio 自己的方法中检索从 For 循环所做的值更改?

java - JNI 如何存储字符数组并将其记录在jNI中?

android - 无法使按钮仅在单击时改变颜色(Android)

java - 如何导入 com.android.support.test.espresso.contrib ?我已经添加了所需的依赖项,但它显示无法解析符号贡献?

java - 在 JAVA 中将列表对象添加到另一个列表中