购物车

xml:

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <include layout="@layout/titlelayout"></include>
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        >
        <com.example.gouwuche.view.MyExpandableListView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:id="@+id/exlistview"
            >
        </com.example.gouwuche.view.MyExpandableListView>
    </ScrollView>
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="8"
        android:layout_marginLeft="10dp"
        >
      <CheckBox
          android:layout_width="30dp"
          android:layout_height="20dp"
          android:id="@+id/check"
          android:layout_centerVertical="true"
          />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/checked"
            android:text="已选(0)"
            android:textSize="20sp"
            android:layout_toRightOf="@id/check"
            android:layout_centerVertical="true"
            android:layout_marginLeft="5dp"
            />
        <Button
            android:layout_width="80dp"
            android:layout_height="50dp"
            android:text="下单"
            android:textSize="20sp"
            android:layout_centerVertical="true"
            android:textColor="#fff"
            android:id="@+id/xiadan"
            android:layout_alignParentRight="true"
            android:background="#f00"
            />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/sum"
            android:text="¥0.00"
            android:textSize="22sp"
            android:textColor="#f00"
            android:layout_marginRight="10dp"
            android:layout_toLeftOf="@id/xiadan"
            android:layout_centerVertical="true"
            />
    </RelativeLayout>
</LinearLayout>

 

//父:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#66363636"
    >
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/parent_title"
    android:textSize="20sp"
    android:textColor="#000"
    android:layout_marginLeft="10dp"
    android:text="22222"
    />
</LinearLayout>

 

//子

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
<CheckBox
    android:layout_width="30dp"
    android:layout_height="30dp"
    android:id="@+id/soncheck"
     android:layout_margin="5dp"
    android:layout_centerVertical="true"
    />
    <ImageView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:padding="10dp"
        android:src="@mipmap/leftjiantou"
        android:layout_toRightOf="@id/soncheck"
        android:id="@+id/sonion"
        />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/sontitle"
        android:layout_toRightOf="@id/sonion"
        android:layout_marginLeft="5dp"
        android:textSize="20sp"
        android:text="1111"
        android:layout_alignTop="@id/sonion"
        />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/Nowprice"
        android:text="2222"
        android:layout_alignBottom="@id/sonion"
        android:layout_toRightOf="@id/sonion"
        android:textSize="20sp"
        android:layout_marginLeft="10dp"
        android:textColor="#f00"
        />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/oldprice"
        android:textSize="18dp"
        android:text="333"
        android:layout_toRightOf="@id/Nowprice"
        android:layout_alignBottom="@id/Nowprice"
        android:layout_marginLeft="10dp"
        />
<Button
    android:layout_width="40dp"
    android:layout_height="40dp"
    android:id="@+id/jian"
    android:text="-"
    android:layout_toRightOf="@id/oldprice"
    android:layout_below="@id/sontitle"
    android:layout_marginLeft="40dp"
    />
 <TextView
     android:layout_width="40dp"
     android:layout_height="40dp"
     android:id="@+id/content"
     android:text="1"
     android:background="@drawable/squear"
     android:layout_toRightOf="@id/jian"
     android:layout_alignBottom="@id/jian"
     android:gravity="center"
     />
    <Button
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:id="@+id/jia"
        android:layout_toRightOf="@id/content"
        android:text="+"
        android:layout_below="@id/sontitle"
        />
</RelativeLayout>

 

//头部:

 

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
<ImageView
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:src="@mipmap/leftjiantou"
    />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="购物车"
        android:textSize="30sp"
        android:textStyle="bold"
        android:layout_centerInParent="true"
        />
</RelativeLayout>

 

activity:

package com.example.gouwuche;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ExpandableListView;

import com.example.gouwuche.adapter.ShowAdapter;
import com.example.gouwuche.bean.ShowBean;
import com.example.gouwuche.presenter.ShowPresenterimpl;
import com.example.gouwuche.view.MainView;
import com.example.gouwuche.view.MyExpandableListView;

import java.util.List;

public class MainActivity extends AppCompatActivity implements MainView{

    private MyExpandableListView exlistview;
    private ShowPresenterimpl showPresenterimpl;
    private List<ShowBean.DataBean> data;
    private ShowAdapter adapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化控件
        exlistview = findViewById(R.id.exlistview);
        showPresenterimpl = new ShowPresenterimpl(this);
        showPresenterimpl.getData();
    }

    @Override
    public void onSuccess(ShowBean showBean) {
        data = showBean.getData();
        Log.i("aaa",data.toString());
        if(data!=null){
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    adapter= new ShowAdapter(MainActivity.this,data);
                    exlistview.setAdapter(adapter);
                    int count = exlistview.getCount();
                    for (int i = 0; i <count ; i++) {
                        exlistview.expandGroup(i);
                    }

adapter.setCallback(new ShowAdapter.Callback() {
    @Override
    public void GoodCartsLitenster(int countyMoney, int countsNum) {
       sum.setText("¥:"+countyMoney);
       checked.setText("已选("+countsNum+")");
    }
});
                }
            });
        }
    }

    @Override
    public void onError(int code) {

    }
}

 

view:

package com.example.gouwuche.view;

import com.example.gouwuche.bean.ShowBean;



public interface MainView {

    void onSuccess(ShowBean showBean);

    void onError(int code);
}

 

//二级列表;

 

package com.example.gouwuche.view;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.ExpandableListView;



public class MyExpandableListView extends ExpandableListView {
    public MyExpandableListView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int i = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
        super.onMeasure(widthMeasureSpec, i);
    }
}

 

//model:

package com.example.gouwuche.model;

import com.example.gouwuche.bean.ShowBean;



public interface ShowModel {

    //成功
    void onSuccess(ShowBean showBean);

    //shib
    void onError(int code);
}



//实现:
package com.example.gouwuche.model;

import android.util.Log;

import com.example.gouwuche.bean.ShowBean;
import com.google.gson.Gson;

import java.io.IOException;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;



public class ShowModelimpl {

    public void getData(final ShowModel showModel){
        OkHttpClient okHttpClient=new OkHttpClient
                .Builder()
                .build();
        Request request = new Request
                .Builder()
                .url("http://www.zhaoapi.cn/product/getCarts?uid=71")
                .build();
        //执行
        okHttpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                showModel.onError(1);
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String str = response.body().string();
                Log.i("aaa",str.toString());
                Gson gson=new Gson();
                ShowBean showBean = gson.fromJson(str, ShowBean.class);
                showModel.onSuccess(showBean);
            }
        });
    }
}

 

//presenter

package com.example.gouwuche.presenter;



public interface ShowPresenter {

    void onDestory();
}

 

package com.example.gouwuche.presenter;

import com.example.gouwuche.MainActivity;
import com.example.gouwuche.bean.ShowBean;
import com.example.gouwuche.model.ShowModel;
import com.example.gouwuche.model.ShowModelimpl;
import com.example.gouwuche.view.MainView;


public class ShowPresenterimpl implements ShowPresenter{

   private MainView mainView;
    private ShowModelimpl showModelimpl;

    public ShowPresenterimpl(MainView mainView) {
        this.mainView=mainView;
        this.showModelimpl = new ShowModelimpl();
    }
    public void getData(){
        showModelimpl.getData(new ShowModel() {
            @Override
            public void onSuccess(ShowBean showBean) {
                mainView.onSuccess(showBean);
            }

            @Override
            public void onError(int code) {
              mainView.onError(1);
            }
        });
    }
    //解绑
    @Override
    public void onDestory() {
       if(mainView!=null){
           mainView=null;
       }
    }
}

//adapter

package com.example.gouwuche.adapter;

import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.example.gouwuche.R;
import com.example.gouwuche.bean.ShowBean;

import java.util.List;

public class ShowAdapter extends BaseExpandableListAdapter{
    private Context context;
    private List<ShowBean.DataBean> list;
    //选中的货物的钱数
    private int countsMoney ;
    //选中的货物的个数
    private int countsNum ;
    private Callback callback;

    public void setCallback(Callback callback) {
        this.callback = callback;
    }

    public ShowAdapter(Context context, List<ShowBean.DataBean> list) {
        this.context = context;
        this.list = list;
    }

    public ShowAdapter(Context context, List<ShowBean.DataBean> list, Callback callback) {
        this.context = context;
        this.list = list;
        this.callback=callback;
    }

    @Override
    public void notifyDataSetChanged() {
        super.notifyDataSetChanged();
        getcountsMoneyAndNum();
        callback.GoodCartsLitenster(countsMoney,countsNum);
    }
   public void setIsSelect(boolean isSelect){
       for(ShowBean.DataBean li:list){
           List<ShowBean.DataBean.ListBean> list1= li.getList();
           for(ShowBean.DataBean.ListBean l:list1){
               if(isSelect){
                   l.setSelected(0);
               }else {
                   l.setSelected(1);
               }
           }
       }
       notifyDataSetChanged();
   }
    private void getcountsMoneyAndNum() {
        countsMoney=0;
        countsNum=0;
        if(list==null){
            return;
        }
          for(ShowBean.DataBean li:list){
              List<ShowBean.DataBean.ListBean> list1= li.getList();
              for(ShowBean.DataBean.ListBean l:list1){
                  if(l.getSelected()==1){
                      countsMoney+=(l.getNum()*l.getBargainPrice());
                      countsNum+=l.getNum();
                  }
              }
          }
    }

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

    @Override
    public int getChildrenCount(int i) {
        return list.get(i).getList().size();
    }

    @Override
    public Object getGroup(int i) {
        return list.get(i);
    }

    @Override
    public Object getChild(int i, int i1) {
        return list.get(i).getList().get(i1);
    }

    @Override
    public long getGroupId(int i) {
        return i+1;
    }

    @Override
    public long getChildId(int i, int i1) {
        return i1;
    }

    @Override
    public boolean hasStableIds() {
        return true;
    }

    @Override
    public View getGroupView(int i, boolean b, View view, ViewGroup viewGroup) {
        ViewHolderOne holderOne=null;
        if(view==null){
            holderOne=new ViewHolderOne();
            view= View.inflate(context, R.layout.parentlayout, null);
            holderOne.parentTitle=view.findViewById(R.id.parent_title);
            view.setTag(holderOne);
        }else {
            holderOne= (ViewHolderOne) view.getTag();
        }
        holderOne.parentTitle.setText(list.get(i).getSellerName());
        return view;
    }

    @Override
    public View getChildView(final int i, final int i1, boolean b, View view, ViewGroup viewGroup) {
        ViewHolderTwo holderTwo=null;
        if(view==null){
            holderTwo=new ViewHolderTwo();
              view=View.inflate(context,R.layout.sonlayout,null);
              holderTwo.NowPrice=view.findViewById(R.id.Nowprice);
              holderTwo.OldPrice=view.findViewById(R.id.oldprice);
              holderTwo.sontitle=view.findViewById(R.id.sontitle);
              holderTwo.sonion=view.findViewById(R.id.sonion);
              holderTwo.add= view.findViewById(R.id.jia);
              holderTwo.contact=view.findViewById(R.id.content);
              holderTwo.jian=view.findViewById(R.id.jian);
              holderTwo.check=view.findViewById(R.id.soncheck);
              view.setTag(holderTwo);
        }else {
            holderTwo = (ViewHolderTwo) view.getTag();
        }
        holderTwo.sontitle.setText(this.list.get(i).getList().get(i1).getTitle());
        holderTwo.OldPrice.setText("¥"+ this.list.get(i).getList().get(i1).getBargainPrice());
        holderTwo.NowPrice.setText("¥"+ this.list.get(i).getList().get(i1).getPrice());
        holderTwo.contact.setText(list.get(i).getList().get(i1).getNum()+"");
        String str = this.list.get(i).getList().get(i1).getImages().split("\\|")[0];
        Glide.with(context).load(str).into(holderTwo.sonion);
        //添加事件
       holderTwo.add.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int num = list.get(i).getList().get(i1).getNum();
                num++;
                list.get(i).getList().get(i1).setNum(num);
                notifyDataSetChanged();

            }
        });
       //减事件
        holderTwo.jian.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int num = list.get(i).getList().get(i1).getNum();
                if(num>1){
                    num--;
                }else{
                    num=0;
                }
                list.get(i).getList().get(i1).setNum(num);
              notifyDataSetChanged();
            }
        });
        holderTwo.check.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int selected = list.get(i).getList().get(i1).getSelected();
                if(selected==0){
                    list.get(i).getList().get(i1).setSelected(1);
                }else if(selected==1){
                    list.get(i).getList().get(i1).setSelected(0);
                }
                notifyDataSetChanged();
            }
        });
        return view;
    }

    @Override
    public boolean isChildSelectable(int i, int i1) {
        return true;
    }
    class ViewHolderOne{
        TextView parentTitle;
    }

    class ViewHolderTwo{
        TextView NowPrice;
        TextView OldPrice;
        TextView sontitle;
        ImageView sonion;
        CheckBox check;
        Button add;
        TextView contact;
        Button jian;
    }
    public interface Callback {
        void GoodCartsLitenster(int countyMoney, int countsNum);
    }
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值