电商购物

以下是购物车的简单实现代码,希望对大家能起到一点作用

首先咱们先把布局完成

values中的attr布局

<declare-styleable name="QuantityChooseView">
     <attr name="maxQuantity" format="integer"/>
     <attr name="quantity" format="integer"/>
     <attr name="rightViewEnableSrc" format="integer"/>
     <attr name="rightViewDisableSrc" format="integer"/>
    <attr name="leftViewEnableSrc" format="integer"/>
     <attr name="leftViewDisableSrc" format="integer"/>
     <attr name="quantityTextSize" format="integer"/>
     <attr name="quantityTextColor" format="color"/>
     </declare-styleable>

drawable包的布局

<shape xmlns:android="http://schemas.android.com/apk/res/android">
        <!-- 实心 -->
        <solid android:color="@android:color/white"/>
        <!-- 边框 -->
        <stroke
            android:width="0.5dp"
            android:color="#000"/>
        <!-- 圆角 -->
        <corners android:radius="3dp"/>
        <!-- 边距 -->
        <padding
            android:top="2dp"
            android:bottom="2dp"
            android:left="6dp"
            android:right="6dp"/>
</shape>
car_item.xml

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="90dp"
        android:orientation="horizontal"
        android:gravity="center_vertical"
        >
        <CheckBox
            android:id="@+id/cb"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
        <ImageView
            android:id="@+id/cart_item_image1"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_marginLeft="10dp"
            android:layout_height="80dp" />
        <TextView
            android:text="XXXXXXXXXXXXXXXXXX"
            android:textSize="18sp"
            android:id="@+id/cart_item_name1"
            android:layout_width="0dp"
            android:layout_height="80dp"
            android:layout_marginLeft="5dp"
            android:layout_weight="3"/>
        <LinearLayout
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_marginLeft="5dp"
            android:orientation="vertical"
            android:layout_height="80dp">
            <TextView
                android:id="@+id/cart_item_price1"
                android:layout_width="match_parent"
                android:layout_height="20dp"
                android:textSize="12sp"
                android:text="¥65000.00"
                android:textColor="#FF5001"
                android:layout_marginTop="5dp"/>
            <TextView
                android:id="@+id/cart_item_numnum"
                android:layout_width="match_parent"
                android:layout_height="20dp"
                android:textSize="12sp"
                android:text="X1"
                android:layout_marginTop="5dp"/>
        </LinearLayout>
    </LinearLayout>
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="20dp">
        <TextView
            android:id="@+id/cart_item_zongji1"
            android:layout_width="wrap_content"
            android:layout_height="20dp"
            android:layout_alignParentRight="true"
            android:text="共计1件商品,共计65000.00元"
            />
    </RelativeLayout>
    <RelativeLayout
        android:layout_width="match_parent"
        android:gravity="center_vertical"
        android:layout_height="40dp">
<TextView
    android:id="@+id/cart_item_delete1"
    android:layout_width="60dp"
    android:layout_height="30dp"
    android:text="删除"
    android:gravity="center"
    android:layout_marginLeft="20dp"
    android:background="@drawable/cart_item"
    />
        <Button
            android:id="@+id/cart_item_jiajia"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:gravity="center"
            android:text="+"
            android:clickable="true"
            android:layout_marginEnd="10dp"
            android:layout_marginRight="10dp"
            android:layout_alignParentRight="true"
            android:background="@drawable/cart_item"
            />
        <TextView
            android:id="@+id/cart_item_shushu"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:gravity="center"
            android:text="1"
            android:layout_marginEnd="40dp"
            android:layout_marginRight="40dp"
            android:layout_alignParentRight="true"
            android:background="@drawable/cart_item"
            />
        <Button
            android:id="@+id/cart_item_jianjian"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:gravity="center"
            android:text="-"
            android:clickable="true"
            android:layout_marginEnd="70dp"
            android:layout_marginRight="70dp"
            android:layout_alignParentRight="true"
            android:background="@drawable/cart_item"
            />


    </RelativeLayout>
Activity——car.xml

<LinearLayout
    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="com.baway.liuheng.carwork.activity.CarActivity">
    <TextView
        android:id="@+id/title"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:orientation="horizontal"
        android:background="#FF5001"
        android:gravity="center"
        android:text="购物车"
        android:textSize="25sp"
        android:textColor="#ffff"
        android:layout_gravity="center"
        />

    <TextView
        android:id="@+id/cart_tishi"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:text="购物车空空如也"
        android:layout_below="@id/title"
        android:visibility="gone"
        />

    <ListView
        android:id="@+id/cart_lisrview"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:layout_below="@id/title"
        android:layout_above="@id/end"

        >

    </ListView>

    <LinearLayout
        android:id="@+id/end"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_alignParentBottom="true"
        android:orientation="horizontal">
        <CheckBox
            android:id="@+id/cb"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <TextView
            android:id="@+id/cart_spzj"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="3"
            android:gravity="center"
            android:text="共0件商品,共计0元"
            />
        <Button
            android:id="@+id/cart_jiesuan"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:text="去结算"
            android:onClick="JS"
            android:textColor="#ffff"
            android:background="#FF5001"
            />

    </LinearLayout>



</LinearLayout>
接下来就是javaBean包的文件

private String name;
private int Price;

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public int getPrice() {
    return Price;
}

public void setPrice(int price) {
    Price = price;

适配器Adapter文件


public class CartAdapter extends BaseAdapter {
    private CarActivity mContext;
    private List<User> mList;
    private int aa = 1;
    public CartAdapter(CarActivity context, List<User> list) {
        mContext = context;
        mList = list;
    }

    @Override
    public int getCount() {
        return mList.size();
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        ViewHolder holder=null;
        if(convertView==null){
            convertView=View.inflate(mContext, R.layout.cart_item,null);
            holder=new ViewHolder();

            holder.name = (TextView)convertView.findViewById(R.id.cart_item_name1);
            holder.price = (TextView)convertView.findViewById(R.id.cart_item_price1);
            holder.image = (ImageView)convertView.findViewById(R.id.cart_item_image1);
            holder.shu = (TextView)convertView.findViewById(R.id.cart_item_shushu);
            holder.jia = (Button)convertView.findViewById(R.id.cart_item_jiajia);
            holder.jian = (Button)convertView.findViewById(R.id.cart_item_jianjian);
            holder.shu = (TextView)convertView.findViewById(R.id.cart_item_shushu);
            holder.num = (TextView)convertView.findViewById(R.id.cart_item_numnum);
            holder.DGZJ = (TextView)convertView.findViewById(R.id.cart_item_zongji1);
            holder.delete1 = (TextView)convertView.findViewById(R.id.cart_item_delete1);
            convertView.setTag(holder);
        }else{
            holder=(ViewHolder)convertView.getTag();
        }
        holder.name.setText(mList.get(position).getName());
        holder.price.setText(mList.get(position).getPrice()+"");

        holder.DGZJ.setText("共計1件商品,共計"+mList.get(position).getPrice()+"元");
        final ViewHolder finalHolder = holder;
        final ViewHolder finalHolder1 = holder;
        final ViewHolder finalHolder2 = holder;
        final ViewHolder finalHolder3 = holder;

        holder.jia.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //获取当前的数量
                int count =Integer.parseInt(finalHolder3.shu.getText().toString()) ;
                //每点击一次数量加一
                ++count;
                //设置item中对应的数值
                finalHolder.shu.setText(""+count);
                finalHolder1.num.setText("X"+count);
                //计算当前数量商品的总价
                int b=mList.get(position).getPrice();
                float c = b*count;
                //设置商品总价
                finalHolder2.DGZJ.setText("共计"+count+"件商品,共计"+c+"元");
                //获取当前Fragment所在的Activity
                //利用得到的Fragment调用在Fragment中写的方法
                //传的为正负值,便于累计计算
                mContext.setData(1, (int) b);
            }
        });
        holder.jian.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int count =Integer.parseInt(finalHolder3.shu.getText().toString()) ;
                if(count>0)
                {
                    --count;
                    finalHolder.shu.setText(""+count);
                    finalHolder1.num.setText("X"+count);
                    int b=mList.get(position).getPrice();
                    float c = b*count;
                    finalHolder2.DGZJ.setText("共计"+count+"件商品,共计"+c+"元");
                    mContext.setData(-1, (int) -b);
                }else if(count <= 0){
                    Toast.makeText(mContext,"最小数量",Toast.LENGTH_LONG).show();
                }
            }
        });

        holder.delete1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(mContext,"点击删除",Toast.LENGTH_LONG).show();

                float b=mList.get(position).getPrice();
                mContext.setData(-1, (int) -b);
                mContext.setDelete(position);
            }
        });
        return convertView;
    }
    class ViewHolder{
        Button jia,jian;
        TextView name,price,shu,num,DGZJ,delete1,jiajian;
        ImageView image;
    }

最后就是Activity的实现了

public class CarActivity extends AppCompatActivity {
    private List<User> list;
    private CartAdapter adapter;
    private ListView listView;
    private TextView spzj;
    private int sum;
    private int price;
    private Button jiesuan;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_car);
        listView = (ListView)findViewById(R.id.cart_lisrview);
        spzj = (TextView)findViewById(R.id.cart_spzj);
        jiashuju();
    }

    private void jiashuju() {
        list = new ArrayList<>();
        User user=new User();
//        RlvBean user = new RlvBean();
        user.setName("百达翡丽");
//        user.getStories().add((RlvBean.StoriesEntity) getTitle());
        user.setPrice(1200);
        list .add(user);

        User user1 = new User();
        user1.setName("劳力士");
        user1.setPrice(4500);
        list.add(user1);

        adapter = new CartAdapter(this, list);
        listView.setAdapter(adapter);
        //给控件设置初始值
        for(int i = 0; i <list.size();i++){
            price+= list.get(i).getPrice();
        }
        sum = list.size();
        spzj.setText("共计"+sum+"件商品,共计"+price+"元");
    }
    //自定义的方法,接收Adapter传过来的数据
    public void setData(int a ,int b){
        sum+=a;
        price+=b;
        spzj.setText("共计"+sum+"件商品,共计"+price+"元");
    }
    //自定义的方法,接收Adapter传过来的数据
    public void setDelete(int a){
        list.remove(a);
        adapter.notifyDataSetChanged();
    }
}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值