栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android RecyclerView实现购物车功能

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android RecyclerView实现购物车功能

购物车实现图片:

准备工作:
1,在项目中建立shoppingcart的Model

2,在与Activity上一级包,相同路径建立Adapter和model包(package)
如图:

3,Adapter中建立名字为 ShopAdapter 的类(class)
4,Model中建立名字为 Shop 的类
5,将:创建与下面图片一样图片加入drawable文件中
add.png +图片
down.png -图片
login.png 初始小图片(无作用)
login2.png 初始小图片(无作用)
//下面自己可随便找,名字一样即可
pic1.jpg
pic2.jpg
pic3.jpg
pic4.jpg
pic5.jpg
pic6.jpg
pic7.jpg
pic8.jpg
pic9.jpg
pic10.jpg
pic11.png
pic12.jpg
pic13.jpg
pic14.jpg

开始复制粘贴:
1,在activity_main.xml中粘贴:




    

        

        

        
    

    

    

    

        

        

        

        

2,在shop.xml中粘贴:




    

    

    

    

    

    

    

    


3,在ShopAdapter类中粘贴:

package com.llw.Adapter;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.core.app.ComponentActivity;
import androidx.recyclerview.widget.RecyclerView;

import com.llw.model.Shop;
import com.llw.shoppingcart.MainActivity;
import com.llw.shoppingcart.R;

import java.util.List;

public class ShopAdapter extends RecyclerView.Adapter {

    private List list;
    public ShopAdapter(Listlist){
        this.list=list;
    }
    public boolean[] flag = new boolean[100];
    public int sum=0;
    public int sum1=0;
    TextView priceAll;

//计算sum和
    public int getSum1(){
        sum1=0;
        for(int i=0;i
            if(flag[i]==true){
                sum1+=list.get(i).getNum()*list.get(i).getPrice();
            }
        }
        return sum1;
    }
    public static class ViewHolder extends RecyclerView.ViewHolder{

        ImageView photo;
        ImageView photo_add;
        ImageView photo_down;
        TextView text1;
        TextView text2;
        TextView price;
        TextView num;
        CheckBox radio;
        public ViewHolder(@NonNull View view) {
            super(view);
            photo=(ImageView) view.findViewById(R.id.photo);
            photo_add=(ImageView) view.findViewById(R.id.photo_add);
            photo_down=(ImageView) view.findViewById(R.id.ptoto_down);
            text1=(TextView) view.findViewById(R.id.text1);
            text2=(TextView) view.findViewById(R.id.test2);
            price=(TextView) view.findViewById(R.id.price);
            num=(TextView) view.findViewById(R.id.num);
            radio=(CheckBox) view.findViewById(R.id.radio);

        }
    }
    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.shop,parent,false);
        ViewHolder viewHolder=new ViewHolder(view);
        View view2=LayoutInflater.from(parent.getContext()).inflate(R.layout.activity_main,parent,false);
        ViewHolder viewHolder2=new ViewHolder(view2);//获取MainActivity的布局操作

        //监听事件
        //监听点击的图片事件
        viewHolder.photo.setOnClickListener(new View.OnClickListener(){

            @Override
            public void onClick(View view) {
                setPosition( viewHolder.getAdapterPosition() );///
                int pos=viewHolder.getAdapterPosition();
                Shop shop=list.get(pos);
                Uri webpage;
                if(shop.getPhotoId()==R.drawable.pic1){
                    webpage = Uri.parse("https://item.jd.com/100018761109.html");
                }
                else if(shop.getPhotoId()==R.drawable.pic2){
                    webpage = Uri.parse("https://item.jd.com/10023842249226.html");
                }
                else if(shop.getPhotoId()==R.drawable.pic3){
                    webpage = Uri.parse("https://item.jd.com/100018633249.html");
                }
                else if(shop.getPhotoId()==R.drawable.pic4){
                    webpage = Uri.parse("https://item.jd.com/10022335886010.html");
                }
                else if(shop.getPhotoId()==R.drawable.pic5){
                    webpage = Uri.parse("https://item.jd.com/8534207.html");
                }
                else if(shop.getPhotoId()==R.drawable.pic6){
                    webpage = Uri.parse("https://item.jd.com/100014205656.html");
                }
                else if(shop.getPhotoId()==R.drawable.pic7){
                    webpage = Uri.parse("https://item.jd.com/100027703540.html");
                }
                else if(shop.getPhotoId()==R.drawable.pic8){
                    webpage = Uri.parse("https://item.jd.com/10040851500488.html");
                }
                else if(shop.getPhotoId()==R.drawable.pic9){
                    webpage = Uri.parse("https://item.jd.com/100031564120.html");
                }
                else if(shop.getPhotoId()==R.drawable.pic10){
                    webpage = Uri.parse("https://item.jd.com/7170704.html");
                }
                else if(shop.getPhotoId()==R.drawable.pic11){
                    webpage = Uri.parse("https://item.jd.com/10036491869801.html");
                }
                else if(shop.getPhotoId()==R.drawable.pic12){
                    webpage = Uri.parse("https://item.jd.com/10032573727362.html");
                }
                else if(shop.getPhotoId()==R.drawable.pic13){
                    webpage = Uri.parse("https://item.jd.com/11820243915.html#none");
                }
                else if(shop.getPhotoId()==R.drawable.pic14){
                    webpage = Uri.parse("https://item.jd.com/1198996.html");
                }
                else {
                    webpage=Uri.parse("");
                }
                Intent intent = new Intent();
                intent.setAction( Intent.ACTION_VIEW );
                intent.setData( webpage );
                parent.getContext().startActivity(intent);
            }
        });
        //add+1
        viewHolder.photo_add.setOnClickListener(new View.OnClickListener(){

            @Override
            public void onClick(View view) {
                int pos=viewHolder.getAdapterPosition();
                Shop shop= list.get(pos);
                int x=shop.getNum();
                x++;
                shop.setNum(x);
                viewHolder.num.setText(x+"");
                if(flag[pos]==true){
                    priceAll=view2.findViewById(R.id.priceall);
                    priceAll.setText("一共:"+getSum1()+".0元");
                    Toast.makeText(view.getContext(),""+priceAll.getText(),Toast.LENGTH_SHORT).show();

                }
            }
        });

        //down-1
        viewHolder.photo_down.setOnClickListener(new View.OnClickListener(){

            @Override
            public void onClick(View view) {
                int pos=viewHolder.getAdapterPosition();
                Shop shop= list.get(pos);
                int x=shop.getNum();
                x--;
                if(x<0) x=0;
                shop.setNum(x);
                viewHolder.num.setText(x+"");
                if(flag[pos]==true){
                    priceAll=view2.findViewById(R.id.priceall);
                    priceAll.setText("一共:"+getSum1()+".0元");
                    Toast.makeText(view.getContext(),""+priceAll.getText(),Toast.LENGTH_SHORT).show();
                }
            }
        });
        //设置图片监听事件



        return viewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        Shop shop=list.get(position);
        holder.text1.setText(shop.getText1());
        holder.text2.setText(shop.getText2());
        holder.price.setText(shop.getPrice()+".0");
        holder.num.setText(shop.getNum()+"");
        holder.photo.setImageResource(shop.getPhotoId());
 //       holder.photo_add.setImageResource(shop.getPhoto_addId());
//        holder.photo_down.setImageResource(shop.getPhoto_downId());
//        holder.radio.setVisibility(View.VISIBLE);
        //checkbutton的绑定
        holder.radio.setText((position+1)+"");//设置多选按钮的位置值,删除行后会更新
        holder.radio.setOnCheckedChangeListener(null);
        holder.radio.setChecked(flag[position]);

        holder.radio.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                flag[position]=b;
            }
        });


    }

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

    private int position;
    public int getPosition() {
        return position;
    }
    public void setPosition(int position) {
        this.position = position;
    }

}

4,在Shop类中粘贴:

package com.llw.model;

public class Shop {
    private String text1;//商品名称
    private String text2;//商品描叙
    private int price;//商品价格
    private int num;//商品数量
    private int photoId;
    private int photo_addId;
    private int photo_downId;
    private boolean isChecked;

    public Shop(String text1,String text2,int photoId,int num,int price){
        this.text1 = text1;this.text2 = text2;this.photoId = photoId;this.num = num;this.price = price;
//        ,int price,int num,int photoId,int photo_addId,int photo_downId,boolean isChecked
//        this.price = price;this.num = num;
//        this.photoId = photoId;this.photo_downId = photo_downId;this.isChecked =isChecked;
//        this.photo_addId = photo_addId;
    }
    public void setText1(String text1) {
        this.text1 = text1;
    }

    public void setText2(String text2) {
        this.text2 = text2;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    public void setNum(int num) {
        this.num = num;
    }

    public void setPhotoId(int photoId) {
        this.photoId = photoId;
    }

    public void setPhoto_addId(int photo_addId) {
        this.photo_addId = photo_addId;
    }

    public void setPhoto_downId(int photo_downId) {
        this.photo_downId = photo_downId;
    }

    public void setChecked(boolean checked) {
        isChecked = checked;
    }

    public String getText1() {
        return text1;
    }

    public String getText2() {
        return text2;
    }

    public int getPrice() {
        return price;
    }

    public int getNum() {
        return num;
    }

    public int getPhotoId() {
        return photoId;
    }

    public int getPhoto_addId() {
        return photo_addId;
    }

    public int getPhoto_downId() {
        return photo_downId;
    }

    public boolean isChecked() {
        return isChecked;
    }
}

5,在MainActivity中粘贴:

package com.llw.shoppingcart;

import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.TextView;

import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.llw.Adapter.ShopAdapter;
import com.llw.model.Shop;

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

public class MainActivity extends AppCompatActivity {
    private RecyclerView recyclerView1;
    private CheckBox selectAll;
    private boolean[]f;
    private TextView clr;
    private TextView del;
    private Button buttonAll;
    private TextView priceAll;

    private List list=new ArrayList<>();
    private RecyclerView recyclerView;
    private ShopAdapter adapter;
    public void initShop(){
            Shop shop=new Shop("5G手机 小米 红米","Redmi K50 电竞版 全新",R.drawable.pic1,1,3849);
            list.add(shop);
            Shop shop1=new Shop("全友家居餐桌椅","家用小户型吃饭桌子",R.drawable.pic2,1,4071);
            list.add(shop1);
            Shop shop2=new Shop("15.6英寸轻薄游戏本","华硕天选air 2022 12代",R.drawable.pic3,1,9999);
            list.add(shop2);
            Shop shop3=new Shop("圣闲女童爱莎公主裙","春夏款可拆披纱棉质舒适",R.drawable.pic4,1,108);
            list.add(shop3);
            Shop shop4=new Shop("高钙儿童纯牛奶","伊利 QQ星儿童纯牛奶",R.drawable.pic5,1,56);
            list.add(shop4);
            Shop shop5=new Shop("男女同款厚底熊猫鞋","老爹鞋休闲运动鞋情侣鞋",R.drawable.pic6,1,359);
            list.add(shop5);
            Shop shop6=new Shop("一次性医用外科口罩","无菌三层外科灭菌口罩",R.drawable.pic7,1,39);
            list.add(shop6);
            Shop shop7=new Shop("苹果13promax手机壳","iphone13保护套透明超薄",R.drawable.pic8,1,34);
            list.add(shop7);
            Shop shop8=new Shop("佳洁士3D炫白牙膏","美白牙膏去黄去牙渍",R.drawable.pic9,1,27);
            list.add(shop8);
            Shop shop9=new Shop("大连美早樱桃","车厘子巨无霸JJJ级",R.drawable.pic10,1,160);
            list.add(shop9);
            Shop shop10=new Shop("华为nova9","9号色 8+128G全网通",R.drawable.pic11,1,2519);
            list.add(shop10);
            Shop shop11=new Shop("蓝牙耳机","oppo 白色尊享升级版",R.drawable.pic12,1,89);
            list.add(shop11);
            Shop shop12=new Shop(" T9民谣吉他","新手入门练习琴guitar",R.drawable.pic13,1,175);
            list.add(shop12);
            Shop shop13=new Shop("卡西欧(CASIO)手表","商务休闲男表石英表",R.drawable.pic14,1,505);
            list.add(shop13);

    }

    public void initRecyclerView2() {
        recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
        // 定义一个线性布局管理器(默认是垂直排列)
        LinearLayoutManager layoutManager = new LinearLayoutManager(this); //默认垂直排列
        recyclerView.setLayoutManager(layoutManager);
        adapter = new ShopAdapter(list);
        recyclerView.setAdapter(adapter);

        //添加默认的分割线
        recyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));
    }


    //全选和全不选功能
    public void selectAll(){
        selectAll=(CheckBox)findViewById(R.id.checkBoxall);
        recyclerView=(RecyclerView) findViewById(R.id.recyclerView);
        f=new boolean[100];
        selectAll.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                if(b==true){
                    for(int i=0;i<100;i++){
                        adapter.flag[i]=true;
                        adapter.notifyDataSetChanged();
                    }
                }
                else{
                    for(int i=0;i<100;i++){
                        adapter.flag[i]=false;
                        adapter.notifyDataSetChanged();
                    }
                }
                //更新数据
                // adapter = new ShopAdapter(list);
                // adapter.notifyDataSetChanged();
            }
        });
    }
    //移除功能
    public void removeItem(int position){
        list.remove(position);
        adapter.notifyItemRemoved(position);
        adapter.notifyItemRangeChanged(position,list.size());//必须用这个不然会紊乱
    }
    //删除功能
    public  void delete(){
        del=(TextView)findViewById(R.id.delect);
        del.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
              //  Toast.makeText(MainActivity.this,"删除功能",Toast.LENGTH_SHORT).show();
                for(int i=0;i
                    if(adapter.flag[i]==true){
                        removeItem(i);
                        //删除list数组后还要更新flag数组 i没有了i+1的变成了i所有flag[i]=flag[1+1]
                        for(int j=i;j
        clr=(TextView)findViewById(R.id.clear);
        clr.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
            //    Toast.makeText(MainActivity.this,"清空功能",Toast.LENGTH_SHORT).show();
                list.clear();
                adapter.notifyDataSetChanged();
            }
        });
    }
    //计算合计总价钱
    public void allPrice(){
        buttonAll=(Button)findViewById(R.id.buttonall);
        priceAll=(TextView)findViewById(R.id.priceall);
        buttonAll.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                priceAll.setText(adapter.getSum1()+".0");
            }
        });
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initShop();
        initRecyclerView2();
        selectAll();
        delete();
        clear();
        allPrice();

        //ActionBar
        ActionBar actionBar=getSupportActionBar();
        actionBar.hide();
        //清屏
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
    }

}

注:可能package不一样自己改动一下即可
以后更新,讲解每个布局和每部分代码功能

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/836843.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号