Как получить значение Int от адаптера к Activity в android - PullRequest
1 голос
/ 11 июля 2020

Я хочу получить значение int из моего класса адаптера для моей активности, но я ничего не получаю при использовании этого кода:

Вот мой адаптер:

package com.capi.ccecommerceapp.Adapter;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import com.bumptech.glide.Glide;
import com.capi.ccecommerceapp.Model.Cart;
import com.capi.ccecommerceapp.R;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

import java.util.List;

public class CartAdapter extends RecyclerView.Adapter<CartAdapter.ViewHolder>
{
    private Context context;
    private List<Cart> cartList;

    private String productImage;
    public int overTotalPrice = 0;

    public CartAdapter(Context context, List<Cart> cartList ) {
        this.context = context;
        this.cartList = cartList;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.cart_item, parent, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull final ViewHolder holder, final int position) {
        holder.cartName.setText(cartList.get(position).getProductName());
        holder.cartPrice.setText(cartList.get(position).getProductPrice());
        holder.cart_qty.setText(String.valueOf(cartList.get(position).getProductQuantity()));

        int oneTypeProductTPrice = ((Integer.parseInt(cartList.get(position).getProductPrice()))) * cartList.get(position).getProductQuantity();

        overTotalPrice = overTotalPrice + oneTypeProductTPrice;




        /*FirebaseAuth auth = FirebaseAuth.getInstance();
        FirebaseUser user = auth.getCurrentUser();*/

       /* holder.cartPlus.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (cartQty<10)
                {
                    cartQty++;
                }
            }
        });
        holder.cartMinus.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (cartQty>1)
                {
                    cartQty--;
                }
            }
        });
        holder.cart_qty.setText(cartQty);
        holder.deleteBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                cartList.remove(cartList.get(position));
            }
        });*/
       /* holder.wishlistBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (holder.wishlistBtn.getTag().equals("add"))
                {
                    holder.wishlistBtn.setImageResource(R.drawable.ic_love_fill);
                    holder.wishlistBtn.setTag("added");
                }
                else
                {
                    holder.wishlistBtn.setImageResource(R.drawable.love);
                    holder.wishlistBtn.setTag("add");
                }
            }
        });*/

        DatabaseReference reference = FirebaseDatabase.getInstance().getReference()
                .child("Products")
                .child(cartList.get(position).getProductId())
                .child("productImage");

        reference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot)
            {
                if (snapshot.exists()) {
                    productImage = snapshot.getValue(String.class);
                    Glide.with(context).load(productImage).into(holder.cartImage);
                }
            }

            @Override
            public void onCancelled(@NonNull DatabaseError error) {

            }
        });
    }

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

    public static class ViewHolder extends RecyclerView.ViewHolder {

        ImageView cartImage;
        TextView cartName;
        TextView cartPrice;
        ImageView wishlistBtn;
        ImageView deleteBtn;
        ImageView cartPlus;
        ImageView cartMinus;
        TextView cart_qty;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);

            cartImage = itemView.findViewById(R.id.cart_image);
            cartName = itemView.findViewById(R.id.cart_name);
            cartPrice = itemView.findViewById(R.id.cart_price);
            wishlistBtn = itemView.findViewById(R.id.add_to_wishlist);
            deleteBtn = itemView.findViewById(R.id.delete_cart);
            cartPlus = itemView.findViewById(R.id.cart_add);
            cartMinus = itemView.findViewById(R.id.cart_minus);
            cart_qty = itemView.findViewById(R.id.cart_quantity);
        }
    }
}

и вот мой код активности, где я хочу установить его в textView:

package com.capi.ccecommerceapp.Fragment;

import android.content.Intent;
import android.os.Bundle;

import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;

import com.capi.ccecommerceapp.Adapter.CartAdapter;
import com.capi.ccecommerceapp.address.ShiptoActivity;
import com.capi.ccecommerceapp.Model.Cart;
import com.capi.ccecommerceapp.R;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

import java.util.ArrayList;
import java.util.List;

public class CartFragment extends Fragment
{
    private RecyclerView cartRecyclerView;
    private List<Cart> cartList;
    private CartAdapter cartAdapter;
    private Button next;

    private FirebaseAuth auth;
    private FirebaseUser user;

    private TextView subtotal;
    private TextView items;

    private TextView shipping;
    private TextView totalPrice;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_cart, container, false);

        cartRecyclerView = view.findViewById(R.id.cartRecycler);
        next = view.findViewById(R.id.checkout_btn);

        auth = FirebaseAuth.getInstance();
        user = auth.getCurrentUser();

        next.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(new Intent(getContext(), ShiptoActivity.class));
            }
        });

        subtotal = view.findViewById(R.id.subtotal_price);
        items = view.findViewById(R.id.items);
        shipping = view.findViewById(R.id.shipping_price);

        LinearLayoutManager layoutManager = new LinearLayoutManager(getContext());
        cartRecyclerView.setLayoutManager(layoutManager);

        cartList = new ArrayList<>();

        cartAdapter = new CartAdapter(getContext(), cartList);
        cartRecyclerView.setAdapter(cartAdapter);

        loadCart();

        return view;
    }

    private void loadCart()
    {
        DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("Cart")
                .child(user.getUid());

        reference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                for (DataSnapshot dataSnapshot : snapshot.getChildren())
                {
                    Cart cart = dataSnapshot.getValue(Cart.class);
                    cartList.add(cart);
                }

                cartAdapter.notifyDataSetChanged();
                subtotal.setText("$" + cartAdapter.overTotalPrice);
                items.setText("Items("+cartAdapter.getItemCount()+")");
                int shippingPrice = (cartAdapter.overTotalPrice / 20);
                shipping.setText("$" + shippingPrice);
                /*int totalPriceFinal = shippingPrice + cartAdapter.getOverTotalPrice();
                totalPrice.setText("$" + totalPriceFinal);*/
            }

            @Override
            public void onCancelled(@NonNull DatabaseError error) {

            }
        });
    }
}

Я хочу получить этот int: public int overTotalPrice = 0;

И я получаю это как: subtotal.setText("$"+cartAdapter.overTotalPrice);

У кого-нибудь есть решение? ??????????????????????? ???????????????????? ??????????????????????

...