Вызов функции вычисления в классе адаптера для класса Java? - PullRequest
0 голосов
/ 01 ноября 2019

У меня есть активность в корзине, где пользователь может добавлять, обновлять и удалять свою корзину. У каждой функции есть своя java-активность, и у меня также есть активность CartAdapter. Я хочу выполнить расчет, который может отображать общую стоимость товара клиента в действии ViewCart. Я выполнил расчет на CartAdapter, но у меня возникла проблема с отображением totalPrice внутри моей активности ViewCart.

Я получил ошибку, которая сказала

java.lang.NumberFormatException: Для входной строки:«99,00» в java.lang.Integer.parseInt (Integer.java:615) в java.lang.Integer.valueOf (Integer.java:801) в com.example.g.Customer.CartAdapter.onBindViewHolder (CartAdapter.java:68) на com.example.g.Customer.CartAdapter.onBindViewHolder (CartAdapter.java:28)

Вот мой CartAdapter


   public class CartAdapter extends RecyclerView.Adapter<CartAdapter.MyViewHolder> {
    private Context context;


    List<String> key;


    ArrayList<Cart> CartList;

    int totalPrice = 0;
    int totalPrice1 = 0;


    public CartAdapter(ArrayList<Cart> CartListList) {
        this.CartList = CartListList;

    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.cust_view_cart, viewGroup, false);

        context = viewGroup.getContext();
        return new CartAdapter.MyViewHolder(view);
    }


    @NonNull
    @Override
    public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, final int i) {

        Picasso.with(context).load(CartList.get(i).getPro_image()).into(myViewHolder.image);
        myViewHolder.name.setText(CartList.get(i).getPro_name());
        myViewHolder.category.setText(CartList.get(i).getPro_category());
        myViewHolder.price.setText(CartList.get(i).getPro_price());
        myViewHolder.size.setText(CartList.get(i).getSize());
        myViewHolder.quantity.setText(CartList.get(i).getQuantity());


        totalPrice1 = (int)Double.parseDouble((CartList.get(i).getPro_price())) * Integer.valueOf(CartList.get(i).getQuantity());
        totalPrice = totalPrice + totalPrice1;




        myViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String cart_id = CartList.get(i).getCart_id();
                String keyB = CartList.get(i).getBrand_id();
                String pid = CartList.get(i).getPro_id();
                String cust_id = CartList.get(i).getCust_id();
                String name = CartList.get(i).getPro_name();
                String category = CartList.get(i).getPro_category();
                String price = CartList.get(i).getPro_price();
                String image = CartList.get(i).getPro_image();
                String size = CartList.get(i).getSize();
                String quantity = CartList.get(i).getQuantity();


                Intent intent = new Intent(context, UpdateCart.class);
                intent.putExtra("cust_id", cust_id);
                intent.putExtra("Cart_id", cart_id);
                intent.putExtra("keyB", keyB);
                intent.putExtra("pid", pid);
                intent.putExtra("pro_name", name);
                intent.putExtra("pro_category", category);
                intent.putExtra("pro_price", price);
                intent.putExtra("pro_image", image);
                intent.putExtra("size", size);
                intent.putExtra("quantity", quantity);
                context.startActivity(intent);
            }
        });


        myViewHolder.btnDelete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String pro_name = CartList.get(i).getPro_name();
                String cart_id = CartList.get(i).getCart_id();
                String cust_id = CartList.get(i).getCust_id();
                DatabaseReference dbCart = FirebaseDatabase.getInstance().getReference("Cart").child(cust_id);
                dbCart.child(cart_id).removeValue();

                //set url of image to storageref
                StorageReference storageReference = FirebaseStorage.getInstance().getReferenceFromUrl(CartList.get(i).getPro_image());
                // Delete the file
                storageReference.delete().addOnSuccessListener(new OnSuccessListener<Void>() {
                    @Override
                    public void onSuccess(Void aVoid) {
                        // File deleted successfully
                    }
                }).addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(Exception exception) {
                        // Uh-oh, an error occurred!
                    }
                });

                //Toolbar
                // Remove the item on remove/button click
                CartList.remove(i);
                /*
                    Parameters
                        position : Position of the item that has now been removed
                */
                notifyItemRemoved(i);

                /*
                    Parameters
                        positionStart : Position of the first item that has changed
                        itemCount : Number of items that have changed
                */
                notifyItemRangeChanged(i, CartList.size());

                // Show the removed item label
                Toast.makeText(context, pro_name + " has been removed from your cart", Toast.LENGTH_SHORT).show();

            }
        });


    }

    @Override
    public int getItemCount() {
        return CartList.size();
    }

    class MyViewHolder extends RecyclerView.ViewHolder {
        TextView name, category, price, size, quantity;
        ImageView image, btnDelete;

        public MyViewHolder(View itemView) {
            super(itemView);

            name = itemView.findViewById(R.id.name);
            category = itemView.findViewById(R.id.category);
            image = itemView.findViewById(R.id.image);
            price = itemView.findViewById(R.id.price);
            size = itemView.findViewById(R.id.size);
            quantity = itemView.findViewById(R.id.quantity);
            btnDelete = itemView.findViewById(R.id.delete);


        }
    }
}


ViewCart


   public class ViewCart extends AppCompatActivity {

    FirebaseAuth firebaseAuth;
    DatabaseReference databaseReference;
    FirebaseUser currentUser;
    ArrayList<Cart> CartList;
    RecyclerView recyclerView;

    private int totalPrice = 0;
    TextView total;


    private String userID, cust_id;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_view_cart);

        total = findViewById(R.id.total);

        total.setText( String.valueOf(totalPrice));

        firebaseAuth = FirebaseAuth.getInstance();
        currentUser = firebaseAuth.getCurrentUser();

        if (currentUser != null) {
            userID = currentUser.getUid();
            cust_id = firebaseAuth.getUid();
            databaseReference = FirebaseDatabase.getInstance().getReference("Cart").child(cust_id);
            recyclerView = findViewById(R.id.rv);
            recyclerView.setHasFixedSize(true);
            recyclerView.setLayoutManager(new LinearLayoutManager(this));

            databaseReference.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                    CartList = new ArrayList<>();
                    for (DataSnapshot ds : dataSnapshot.getChildren()) {

                        CartList.add(ds.getValue(Cart.class));
                    }

                    CartAdapter cartAdapter = new CartAdapter(CartList);
                    recyclerView.setAdapter(cartAdapter);

                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {
                    Toast.makeText(getApplicationContext(), databaseError.getMessage(), Toast.LENGTH_SHORT).show();
                }
            });
        } else
            openDialog();

    }

    private void openDialog() {

        LoginDialog loginlDialog = new LoginDialog();
        loginlDialog.show(getSupportFragmentManager(), "login dialog");

    }

Ответы [ 2 ]

0 голосов
/ 01 ноября 2019

Почему вы сохранили price как String вместо float или int?

Вы, вероятно, сохранили price как String, так чтовы можете отобразить его в TextView, но при этом вы будете вынуждены разыгрывать его каждый раз.

Вы должны оставить цену как float и установить ее как текст в TextView, просто используйте string concatenation:

float price = 99.00;
textView.setText(value+ "");
0 голосов
/ 01 ноября 2019

используйте это


   public class ViewCart extends AppCompatActivity {

    FirebaseAuth firebaseAuth;
    DatabaseReference databaseReference;
    FirebaseUser currentUser;
    ArrayList<Cart> CartList;
    RecyclerView recyclerView;

    private int totalPrice = 0;
    TextView total;


    private String userID, cust_id;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_view_cart);

        total = findViewById(R.id.total);
        firebaseAuth = FirebaseAuth.getInstance();
        currentUser = firebaseAuth.getCurrentUser();

        if (currentUser != null) {
            userID = currentUser.getUid();
            cust_id = firebaseAuth.getUid();
            databaseReference = FirebaseDatabase.getInstance().getReference("Cart").child(cust_id);
            recyclerView = findViewById(R.id.rv);
            recyclerView.setHasFixedSize(true);
            recyclerView.setLayoutManager(new LinearLayoutManager(this));

            databaseReference.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                    CartList = new ArrayList<>();
                    for (DataSnapshot ds : dataSnapshot.getChildren()) {

                        CartList.add(ds.getValue(Cart.class));
                        Cart cart = ds.getValue(Cart.class);
                        totalPrice = totalPrice + (int)Double.parseDouble(cart.getPrice()) *  Integer.valueOf(cart.getQuantity());

                    }

                    CartAdapter cartAdapter = new CartAdapter(CartList);
                    recyclerView.setAdapter(cartAdapter);
                    total.setText( String.valueOf(totalPrice));

                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {
                    Toast.makeText(getApplicationContext(), databaseError.getMessage(), Toast.LENGTH_SHORT).show();
                }
            });
        } else
            openDialog();

    }

    private void openDialog() {

        LoginDialog loginlDialog = new LoginDialog();
        loginlDialog.show(getSupportFragmentManager(), "login dialog");

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...