day26

购车能的功能完善

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <com.google.android.material.appbar.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <androidx.appcompat.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="@color/colorAccent"
            app:logo="@drawable/icon_shou"
            app:navigationContentDescription=""
            app:layout_scrollFlags="scroll|enterAlways"
            app:navigationIcon="@drawable/icon_back">

            <TextView
                android:id="@+id/buy_detial_title3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:text="购物车"
                android:textColor="@color/black"
                android:textSize="25sp" />
        </androidx.appcompat.widget.Toolbar>

    </com.google.android.material.appbar.AppBarLayout>
    <androidx.core.widget.NestedScrollView
        android:layout_below="@+id/appbar"
        android:id="@+id/nestscrollcar"
        android:layout_height="match_parent"
        android:layout_width="match_parent">
        <RelativeLayout
            android:id="@+id/relatcar"
            android:layout_height="wrap_content"
            android:layout_width="match_parent">
            <androidx.recyclerview.widget.RecyclerView
                android:id="@+id/recyccar"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_marginTop="10dp" />

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="60dp"
                android:layout_below="@+id/recyccar"
                android:layout_alignParentBottom="true"
                android:paddingTop="10dp"
                android:paddingBottom="10dp"
                android:paddingLeft="5dp"
                android:paddingRight="5dp"
                android:background="#802f4f4f"
                android:gravity="center_vertical"
                >

                <CheckBox
                    android:id="@+id/checkbox_all"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:layout_centerVertical="true"
                    android:checked="true"
                    android:text="全选"
                    android:textSize="20sp"
                    style="@style/customCheckbox"/>


                <TextView
                    android:id="@+id/txt_total"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_toRightOf="@+id/checkbox_all"
                    android:layout_marginLeft="28dp"
                    android:layout_centerVertical="true"
                    android:textSize="24dp"
                    android:text="合计"/>

                <Button
                    android:id="@+id/btn_order"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentRight="true"
                    android:layout_centerVertical="true"
                    android:minHeight="60dp"
                    android:minWidth="120dp"
                    android:text="去结算"
                    style="@style/bigRedButton"/>


                <Button
                    android:id="@+id/btn_del"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentRight="true"
                    android:layout_centerVertical="true"
                    android:visibility="gone"
                    android:minHeight="60dp"
                    android:minWidth="120dp"
                    android:text="删除"
                    style="@style/bigRedButton"/>


            </RelativeLayout>
        </RelativeLayout>
    </androidx.core.widget.NestedScrollView>

</RelativeLayout>

1、要实现每个物品的点击事件

2、实现点击全选实现全部物品的checked和如果有物品没有被选中全选键不显示

3、被选中物品价格的总计算

package Home;

import android.content.Context;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

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

import com.bumptech.glide.Glide;
import com.example.expressdelivery.R;

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

import Home.Data.Goods;
import Home.Data.Image;
import Home.Data.ShoppingCart;
import Home.Data.Zuoye;
import Home.utils.CartProvider;
import Home.widget.NumberAddSubView;


public class CarAdapter extends RecyclerView.Adapter<CarAdapter.CarViewHolder>{
    private Context mcontext;
    private List<Goods> goods;
    private List<Zuoye> Zuoyes;
    private List<ShoppingCart> carts=new ArrayList<>();
    private CheckBox checkBox;
    private TextView textView;
    private CartProvider cartProvider;
    public CarAdapter(Context context, List<ShoppingCart> carts, final CheckBox checkBox, TextView textView){
        this.mcontext=context;
        this.carts=carts;
        this.checkBox=checkBox;
        this.textView=textView;
        checkBox.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                checkAll_None(checkBox.isChecked());
                showTotalPrice();
            }
        });
        cartProvider=new CartProvider(mcontext);
        showTotalPrice();
    }

    @NonNull
    @Override
    public CarViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        return new CarViewHolder(LayoutInflater.from(mcontext).inflate(R.layout.layout_car_item,parent,false));
    }

    @Override
    public void onBindViewHolder(@NonNull CarViewHolder holder, final int position) {
        final ShoppingCart cart=carts.get(position);
        Glide.with(mcontext)
                .load(cart.getImgUrl())
                .into(holder.imageView);
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                cart.setIsChecked(!cart.isChecked());
                notifyItemChanged(position);
                checkListen();
                showTotalPrice();
            }
        });
        holder.textView1.setText(cart.getName());
        holder.textView2.setText("$"+String.valueOf(cart.getPrice()));
        holder.checkBox.setChecked(cart.isChecked());
        holder.numberAddSubView.setOnButtonClickListener(new NumberAddSubView.OnButtonClickListener() {
            @Override
            public void onButtonAddClick(View view, int value) {
                cart.setCount(value);
                Toast.makeText(mcontext,value+",快去看看吧!"+cart.getCount(),Toast.LENGTH_SHORT).show();
                cartProvider.put(cart);
                showTotalPrice();
            }

            @Override
            public void onButtonSubClick(View view, int value) {
                cart.setCount(value);
                cartProvider.put(cart);
                showTotalPrice();
            }
        });
        holder.numberAddSubView.setValue(cart.getCount());
    }


    @Override
    public int getItemCount() {

            return carts.size();



    }



    class CarViewHolder extends RecyclerView.ViewHolder{
        private ImageView imageView;
        private TextView textView1;
        private TextView textView2;

        private CheckBox checkBox;
        private NumberAddSubView numberAddSubView;
        public CarViewHolder(@NonNull final View itemView) {
            super(itemView);
            imageView=itemView.findViewById(R.id.iv_pic);
            textView1=itemView.findViewById(R.id.text_title);
            textView2=(TextView)itemView.findViewById(R.id.text_price);
            checkBox=itemView.findViewById(R.id.checkbox);
            numberAddSubView=itemView.findViewById(R.id.num_control);


        }
    }
    public void showTotalPrice(){

        float total = getTotalPrice();

        textView.setText(Html.fromHtml("合计 ¥<span style='color:#eb4f38'>" + total + "</span>"), TextView.BufferType.SPANNABLE);
    }

    private  float getTotalPrice(){

        float sum=0;
        if(!isNull())
            return sum;

        for (ShoppingCart cart:
                carts) {
            if(cart.isChecked())
                sum += cart.getCount()*cart.getPrice();
        }

        return sum;
    }

    private boolean isNull(){
        return (carts !=null && carts.size()>0);
    }

    private void checkListen() {
        int count = 0;
        int checkNum = 0;
        if (carts != null) {
            count = carts.size();

            for (ShoppingCart cart : carts) {
                if (!cart.isChecked()) {
                    checkBox.setChecked(false);
                    break;
                } else {
                    checkNum = checkNum + 1;
                }
            }

            if (count == checkNum) {
                checkBox.setChecked(true);
            }

        }
    }

    public void checkAll_None(boolean isChecked)
    {
        if(!isNull())
            return ;
        int i=0;
        for (ShoppingCart cart :carts)
        {
            cart.setIsChecked(isChecked);
            notifyItemChanged(i);
            i++;
        }
    }
    public void delCart()
    {
        if(!isNull())
            return ;
        for(Iterator iterator = carts.iterator(); iterator.hasNext();)
        {
            ShoppingCart cart = (ShoppingCart) iterator.next();
            if(cart.isChecked())
            {
                int position = carts.indexOf(cart);
                cartProvider.delete(cart);
                iterator.remove();
                notifyItemRemoved(position);
            }
        }
    }

}

 

posted @ 2020-08-30 00:18  晨起  阅读(150)  评论(0编辑  收藏  举报