Android购物车 你所了解的逻辑

该博客演示了Android购物车的实现,包括全选、反选功能,以及计算价格和选中商品数量的逻辑。通过点击事件处理商品的选中状态,并更新总价。示例代码展示了如何处理数据列表及视图的同步。
摘要由CSDN通过智能技术生成

此Demo主要解决的是购物车中的全选,反选计算价格和选中的条目个数的问题,当选中几条时,点击反选,会把当先选中的变为不选中,把不选中的变为选中。点击全选会全部选中,再次点击时,变为全部不选中。

首先呢 咱先来个布局‘
//父的’

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="10dp"
    android:orientation="horizontal">

    <CheckBox
        android:id="@+id/check"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/Group_Name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="memeda" />
</LinearLayout>

<android.support.v7.widget.RecyclerView
    android:id="@+id/child_recycler"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"></android.support.v7.widget.RecyclerView>

//子的

<android.support.v7.widget.CardView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="10dp"
    app:cardCornerRadius="5dp"
    app:cardElevation="5dp">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="109dp">

        <CheckBox
            android:id="@+id/checkbox"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true" />

        <ImageView
            android:id="@+id/image"
            android:layout_width="85dp"
            android:layout_height="85dp"
            android:layout_centerVertical="true"
            android:layout_marginLeft="10dp"
            android:layout_toRightOf="@id/checkbox"
            android:src="@mipmap/ic_launcher" />

        <TextView
            android:id="@+id/shopping_text"
            android:layout_width="200dp"
            android:layout_height="30dp"
            android:layout_alignStart="@+id/s_price"
            android:layout_alignTop="@+id/image"
            android:lines="2" />

        <TextView
            android:id="@+id/s_price"
            android:layout_width="60dp"
            android:layout_height="20dp"
            android:layout_below="@+id/checkbox"
            android:layout_alignParentStart="true"
            android:layout_marginStart="143dp"
            android:text="XXX"
            android:textColor="#E21918" />

        <weight.AddAndRemoveView
            android:id="@+id/AddAndRemove"
            android:layout_width="150dp"
            android:layout_height="60dp"
            android:layout_below="@+id/checkbox"
            android:layout_alignParentEnd="true"
            android:layout_marginTop="-2dp"
            android:layout_marginEnd="84dp" />

    </RelativeLayout>


</android.support.v7.widget.CardView>

/** 全选与反选 */
//商家
public boolean isChecked;
//商品
public boolean check;

//商家
myGwcHolder.Group_Check.setChecked(resultBean.isChecked();
//找到商品的
myChildHolder.checkbox.setChecked(shoppingCartListBean.isCheck());

private List<ShoppingList.ResultBean> listt = new ArrayList<>();
//----------监听-----------------------
//点击事件 /全选反选
CheckAll.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
for (int i = 0; i < listt.size(); i++) {
listt.get(i).setChecked(CheckAll.isChecked());
for (int j = 0; j < listt.get(i).getShoppingCartList().size(); j++) {
listt.get(i).getShoppingCartList().get(j).setCheck(CheckAll.isChecked()); }
}
//总价
allPrice(listt);
//通知刷新
myGwcAdapter.notifyDataSetChanged();
}
});
}

//总价
public void allPrice(List<ShoppingList.ResultBean> alllist) {
    double sjl = 0;
    for (int i = 0; i < alllist.size(); i++) {
        for (int j = 0; j < alllist.get(i).getShoppingCartList().size(); j++) {
            if (alllist.get(i).getShoppingCartList().get(j).isCheck()) {
                //
                int count = alllist.get(i).getShoppingCartList().get(j).getCount();
                int price = alllist.get(i).getShoppingCartList().get(j).getPrice();
                sjl += count * price;

            }
        }
    }
    AllCount.setText(sjl + "");

}
//Fresco

public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
Fresco.initialize(this, ImagePipelineConfig.newBuilder(this)
.setMainDiskCacheConfig(
DiskCacheConfig.newBuilder(this)
//缓存
.setMaxCacheSize(10 * 1024 * 1024)
.setBaseDirectoryPath(new File(Environment.getExternalStorageDirectory().getAbsolutePath()))
.build()

            )
            .build());
}

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值