仿淘宝页面2

XiangQinActivity:详情页面

public class XiangQingActivity extends AppCompatActivity implements XiangQingPrestener.IXiangqingView, AddCartPrestener.IAddCartView {
    @BindView(R.id.simpleDetails)
    SimpleDraweeView simpleDetails;
    @BindView(R.id.title)
    TextView title;
    @BindView(R.id.price)
    TextView price;
    @BindView(R.id.addCart)
    Button addCart;

    private String pid;
    private AddCartPrestener addCartPrestener;
    private XiangQingPrestener xiangQingPrestener;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_xiang_qing);
        ButterKnife.bind(this);
        addCartPrestener = new AddCartPrestener(this);
        xiangQingPrestener = new XiangQingPrestener(this);

        //得到pid
        pid = getIntent().getStringExtra("pid");
        xiangQingPrestener.getData(pid);
    }

    @OnClick(R.id.addCart)
    public void onViewClicked() {
        addCartPrestener.getData(pid);
    }

    @Override
    public void success(DetailsBean.DataBean list) {
        //设置数据
        String[] split = list.getImages().split("\\|");
        simpleDetails.setImageURI(Uri.parse(split[0]));
        title.setText(list.getTitle());
        price.setText(list.getPrice() + "");
    }

    @Override
    public void success(String s) {
        if (s.equals("加购成功")) {
            Intent intent = new Intent(XiangQingActivity.this, ShopCartActivity.class);
            intent.putExtra("pid", pid);
            startActivity(intent);
            Toast.makeText(XiangQingActivity.this, s, Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(XiangQingActivity.this, s, Toast.LENGTH_SHORT).show();
        }
    }

    //防止内存泄漏
    @Override
    protected void onDestroy() {
        super.onDestroy();
        xiangQingPrestener.detach();
    }
}
xiangqing_activity:详情页面布局

RelativeLayout:

<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true">
    <!--<VideoView-->
        <!--android:layout_width="match_parent"-->
        <!--android:layout_height="180dp"-->
        <!--android:id="@+id/videoView"-->
        <!--/>-->
    <com.facebook.drawee.view.SimpleDraweeView
        android:id="@+id/simpleDetails"
        android:layout_width="match_parent"
        android:layout_height="400dp" />
    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="标题"
        android:textSize="20sp"
        />
    <TextView
        android:textColor="#FEB016"
        android:id="@+id/price"
        android:layout_marginTop="5dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="价格"
        android:textSize="20sp"
        />
</LinearLayout>
<LinearLayout
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <LinearLayout
        android:layout_marginTop="10dp"
        android:orientation="horizontal"
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="wrap_content">
        <ImageView
            android:layout_width="0dp"
            android:src="@mipmap/ic_launcher"
            android:layout_height="30dp"
            android:layout_weight="1"
            />
        <ImageView
            android:layout_width="0dp"
            android:src="@mipmap/ic_launcher"
            android:layout_height="30dp"
            android:layout_weight="1"
            />
        <ImageView
            android:layout_width="0dp"
            android:src="@mipmap/ic_launcher"
            android:layout_height="30dp"
            android:layout_weight="1"
            />
    </LinearLayout>

    <LinearLayout
        android:layout_marginLeft="25dp"
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        >
        <Button
            android:id="@+id/addCart"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#fff"
            android:background="#ff0"
            android:text="加入购物车"
            />
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#fff"
            android:background="#f00"
            android:text="立即购买"
            />
    </LinearLayout>

</LinearLayout>
XiangQinModel:

public class XiangQingModel {
    //详情页数据
    public void getData(String pid, final IXiangqingModel iXiangqingModel){
        Map<String,String> map = new HashMap<>();
        map.put("pid",pid);
        map.put("source","android");
        RetrofitManager.get("product/getProductDetail",map, new BaseObserver<DetailsBean>() {
            @Override
            public void success(DetailsBean detailsBean) {
                if(iXiangqingModel!=null){
                    iXiangqingModel.success(detailsBean);
                }
            }

            @Override
            public void failure(int code) {

            }
        });
    }
    public interface IXiangqingModel {
        void success(DetailsBean deatails);
    }
}
XiangQinPresenter

public class XiangQingPrestener {
    IXiangqingView iXiangqingView;
    XiangQingModel xiangQingModel;

    public XiangQingPrestener(IXiangqingView iXiangqingView) {
        this.iXiangqingView = iXiangqingView;
        xiangQingModel=new XiangQingModel();
    }
    public void getData(String pid){
        xiangQingModel.getData(pid, new XiangQingModel.IXiangqingModel() {
            @Override
            public void success(DetailsBean deatails) {
                if(iXiangqingView!=null){
                    iXiangqingView.success(deatails.getData());
                }
            }
        });
    }


    public interface  IXiangqingView{
        void success(DetailsBean.DataBean list);
    }
    public void detach(){
        iXiangqingView=null;
    }
}

AddCartModel:

public class AddCartModel {
    //添加购物车
    public void getData(String pid, final IAddcartModel iAddcartModel){
        Map<String, String> map = new HashMap<>();
        map.put("pid",pid);
        map.put("uid","11738");
        map.put("source","android");
        RetrofitManager.get("product/addCart",map, new BaseObserver<AddCartBean>() {
            @Override
            public void success(AddCartBean addCartBean) {
                if(iAddcartModel!=null){
                    iAddcartModel.success(addCartBean);
                }
            }

            @Override
            public void failure(int code) {

            }
        });
    }
    public interface IAddcartModel{
        void success(AddCartBean addCartBean);
    }
}
AddCartPresenter:

public class AddCartPrestener {
    IAddCartView iAddCartView;
    AddCartModel addCartModel;

    public AddCartPrestener(IAddCartView iAddCartView) {
        this.iAddCartView = iAddCartView;
        addCartModel=new AddCartModel();
    }
    public void getData(String pid){
        addCartModel.getData(pid, new AddCartModel.IAddcartModel() {
            @Override
            public void success(AddCartBean addCartBean) {
                if(iAddCartView!=null){
                    iAddCartView.success(addCartBean.getMsg());
                }
            }
        });
    }

    public interface IAddCartView {
        void success(String s);
    }
}

ShopCartActivity:购物车页面

public class ShopCartActivity extends AppCompatActivity implements ShopCartPrestener.ICartView {
    @BindView(R.id.bianji)
    TextView bianji;
    @BindView(R.id.linear2)
    RelativeLayout linear2;
    @BindView(R.id.expandView)
    ExpandableListView expandView;
    @BindView(R.id.checkAll)
    CheckBox checkAll;
    @BindView(R.id.zprice)
    TextView zprice;
    @BindView(R.id.zcount)
    Button zcount;
    @BindView(R.id.linear)
    RelativeLayout linear;

    private ShopCartPrestener shopCartPrestener;
    private ElvAdapter elvAdapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_shop_cart);
        ButterKnife.bind(this);
        shopCartPrestener = new ShopCartPrestener(this);
        shopCartPrestener.getData();
    }
    @Override
    public void success(List<CartBean.DataBean> group, List<List<CartBean.DataBean.ListBean>> child) {
        elvAdapter = new ElvAdapter(ShopCartActivity.this, group, child);
        elvAdapter.setChangeListener(new ElvAdapter.ChangeListener() {
            @Override
            public void setState(boolean flag) {
                checkAll.setChecked(flag);
            }

            @Override
            public void setText(String price, String count) {
                zcount.setText("结算(" + count + ")");
                zprice.setText("总计:" + price + "¥");
            }
        });
        expandView.setAdapter(elvAdapter);
        //默认展开
        for (int i = 0; i < group.size(); i++) {
            expandView.expandGroup(i);
        }
    }


    @OnClick({R.id.checkAll, R.id.zcount})
    public void onViewClicked(View view) {
        switch (view.getId()) {
            case R.id.checkAll:
                elvAdapter.checkedAll(checkAll.isChecked());
                break;
            case R.id.zcount:
                Intent intent = new Intent(ShopCartActivity.this,DingGoodsActivity.class);

                startActivity(intent);
                break;
        }
    }
}
activity_shop_cart:购物车布局:

Relati'veLayout:

<RelativeLayout
    android:id="@+id/linear2"
    android:layout_width="match_parent"
    android:layout_height="60dp"
    android:background="#000">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="购物车"
        android:textColor="#fff"
        android:textSize="20sp" />

    <TextView
        android:id="@+id/bianji"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_marginBottom="10dp"
        android:layout_marginRight="10dp"
        android:text="编辑"
        android:textColor="#fff" />


</RelativeLayout>

<ExpandableListView
    android:id="@+id/expandView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_above="@+id/linear"
    android:layout_below="@+id/linear2"
    android:groupIndicator="@null"></ExpandableListView>

<RelativeLayout
    android:id="@+id/linear"
    android:layout_width="match_parent"
    android:layout_height="70dp"
    android:layout_alignParentBottom="true"
    android:background="#AAAAAA">

    <CheckBox
        android:id="@+id/checkAll"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:text="全选" />

    <TextView
        android:id="@+id/zprice"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="总计:0.0¥" />

    <Button
        android:id="@+id/zcount"
        android:layout_width="100dp"
        android:layout_height="match_parent"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:background="#FF0000"
        android:text="结算(0)"
        android:textColor="#fff" />
</RelativeLayout>
ShopCartModel:

public class ShopCartModel {
    //购物车的数据
    public void getData(final IShopCart iCartModel){
        Map<String,String> map=new HashMap<>();
        map.put("uid","11738");
        map.put("source","android");
        RetrofitManager.get("product/getCarts",map, new BaseObserver<CartBean>() {
            @Override
            public void success(CartBean cartBean) {
                if(iCartModel!=null){
                    iCartModel.success(cartBean);
                }
            }

            @Override
            public void failure(int code) {

            }
        });
    }
    public interface IShopCart {
        void success(CartBean cartBean);
    }
}
ShopCartPresenter:

public class ShopCartPrestener {
    ShopCartModel cartModel;
    ICartView iCartView;

    public ShopCartPrestener(ICartView iCartView) {
        this.iCartView = iCartView;
        cartModel=new ShopCartModel();
    }
    public void getData(){
        cartModel.getData(new ShopCartModel.IShopCart() {
            @Override
            public void success(CartBean cartBean) {
                //拿到一级二级数据
                List<CartBean.DataBean> group = cartBean.getData();
                List<List<CartBean.DataBean.ListBean>> child=new ArrayList<>();
                for(int i=0;i<group.size();i++){
                    child.add(group.get(i).getList());
                }
                if(iCartView!=null){
                    iCartView.success(group,child);
                }

            }
        });
    }

    public interface ICartView {
        void success(List<CartBean.DataBean> group, List<List<CartBean.DataBean.ListBean>> child);
    }
}
DingGoodsActivity:

public class DingGoodsActivity extends AppCompatActivity {
    @BindView(R.id.imageView)
    ImageView imageView;
    @BindView(R.id.tabLayout)
    TabLayout tabLayout;
    @BindView(R.id.viewPager)
    ViewPager viewPager;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_ding_goods);
        ButterKnife.bind(this);
        viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
            private String[] mTitles = new String[]{"全部", "待支付", "已支付", "已取消"};

            @Override
            public Fragment getItem(int position) {
                if(position==1){
                    return  new TwoFragment();
                }else if(position==2){
                    return  new ThreeFragment();
                }else if(position==3){
                    return new FourFragment();
                }
                return new OneFragment();
            }

            @Override
            public int getCount() {
                return mTitles.length;
            }

            @Override
            public CharSequence getPageTitle(int position) {

                return mTitles[position];
            }
        });

        tabLayout.setupWithViewPager(viewPager);
    }

    @OnClick(R.id.imageView)
    public void onViewClicked() {
        MyPopupWindow.showPopupWindow(viewPager,DingGoodsActivity.this,imageView);

    }
}
activity_ding_goods:订单布局文件

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="60dp"
    >
    <TextView
        android:layout_centerInParent="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20sp"
        android:text="订单页面"
        />
    <ImageView
        android:src="@mipmap/ic_launcher"
        android:layout_width="25dp"
        android:layout_height="25dp"
        android:id="@+id/imageView"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        />
</RelativeLayout>
<TextView
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:background="#000"
    />
<android.support.design.widget.TabLayout
    android:id="@+id/tabLayout"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    >
</android.support.design.widget.TabLayout>

<android.support.v4.view.ViewPager
    android:id="@+id/viewPager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
</android.support.v4.view.ViewPager>
fragment包:

OneFragment:

public class OneFragment extends Fragment {

    private RecyclerView recyclerView;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view=inflater.inflate(R.layout.one_fragment,container,false);
        recyclerView = view.findViewById(R.id.recyclerFragment);
        return view;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        //设置数据
        DingPrestener dingPrestener=new DingPrestener();
        Map<String, String> map = new HashMap<>();
        map.put("uid","71");
        map.put("page","1");
        map.put("source","android");
        RetrofitManager.get("product/getOrders",map, new BaseObserver<DingDBean>() {
            @Override
            public void success(DingDBean dingDBean) {
                recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
                DingAdapter dingAdapter=new DingAdapter(getActivity(),dingDBean.getData());
                recyclerView.setAdapter(dingAdapter);
            }

            @Override
            public void failure(int code) {

            }
        });
    }
}
布局文件:

四个页面的布局相同:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </android.support.v7.widget.RecyclerView>
</LinearLayout>
public class TwoFragment extends Fragment {
    private RecyclerView recyclerView;
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.two_fragment,container,false);
        recyclerView = view.findViewById(R.id.recyclerFragment);
        return view;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        DingPrestener dingPrestener=new DingPrestener();
        dingPrestener.getData("1", "0", new DingPrestener.IDingView() {
            @Override
            public void success(DingDBean dingDBean) {
                //设置适配器
                recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
                DingAdapter dingAdapter=new DingAdapter(getActivity(),dingDBean.getData());
                recyclerView.setAdapter(dingAdapter);
            }
        });
    }
}
public class ThreeFragment extends Fragment {
    private RecyclerView recyclerView;
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.three_fragment,container,false);
        recyclerView = view.findViewById(R.id.recyclerFragment);
        return view;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        DingPrestener dingPresenter = new DingPrestener();
        dingPresenter.getData("1","1", new DingPrestener.IDingView() {
            @Override
            public void success(DingDBean dingDBean) {
                //设置适配器
                recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
                DingAdapter myDingAdapter = new DingAdapter(getActivity(),dingDBean.getData());
                recyclerView.setAdapter(myDingAdapter);
            }
        });
    }
}
public class FourFragment extends Fragment{
    private RecyclerView recyclerView;
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.four_fragment,container,false);
        recyclerView = view.findViewById(R.id.recyclerFragment);
        return view;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        DingPrestener dingPresenter = new DingPrestener();
        dingPresenter.getData("1","2", new DingPrestener.IDingView() {
            @Override
            public void success(DingDBean dingDBean) {
                //设置适配器
                recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
                DingAdapter myDingAdapter = new DingAdapter(getActivity(),dingDBean.getData());
                recyclerView.setAdapter(myDingAdapter);
            }
        });
    }
}
DingModel:

public class DingModel {
    //订单的数据
    public void getData(String page,String status, final IDingModel dingModuleListener){
        Map<String, String> map = new HashMap<>();
        map.put("uid","71");
        map.put("page",page);
        map.put("status",status);
        //http://120.27.23.105/product/getOrders?uid=71&status=1
        map.put("source","android");
        RetrofitManager.get("product/getOrders", map, new BaseObserver<DingDBean>() {
            @Override
            public void success(DingDBean dingDBean) {
                if(dingModuleListener!=null){
                    dingModuleListener.success(dingDBean);
                }
            }

            @Override
            public void failure(int code) {

            }

        });
    }
    public interface IDingModel{

        void success(DingDBean dingDBean);
    }
}
DingPresenter:

public class DingPrestener {
    DingModel dingModel=new DingModel();
    public void getData(String page,String status, final IDingView dingPresenterListener){
        dingModel.getData(page,status, new DingModel.IDingModel() {
            @Override
            public void success(DingDBean dingDBean) {
                if(dingPresenterListener!=null){
                    dingPresenterListener.success(dingDBean);
                }
            }
        });
    }

    public interface IDingView{
        void success(DingDBean dingDBean);
    }
}
购物车的适配器:

public class ElvAdapter extends BaseExpandableListAdapter {
    Context context;
    List<CartBean.DataBean> group;
    List<List<CartBean.DataBean.ListBean>> child;
    private Holder1 holder1;
    private Holder2 holder2;
    public ElvAdapter(Context context, List<CartBean.DataBean> group, List<List<CartBean.DataBean.ListBean>> child) {
        this.context = context;
        this.group = group;
        this.child = child;
    }

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

    @Override
    public int getChildrenCount(int groupPosition) {
        return child.get(groupPosition).size();
    }

    @Override
    public Object getGroup(int groupPosition) {
        return group.get(groupPosition);
    }

    @Override
    public Object getChild(int groupPosition, int childPosition) {
        return child.get(groupPosition).get(childPosition);
    }

    @Override
    public long getGroupId(int groupPosition) {
        return groupPosition;
    }

    @Override
    public long getChildId(int groupPosition, int childPosition) {
        return childPosition;
    }

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

    @Override
    public View getGroupView(final int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
        if(convertView==null){
            convertView = LayoutInflater.from(context).inflate(R.layout.item_expandable_listview, null);
            holder1 = new Holder1();
            holder1.checkBox = convertView.findViewById(R.id.groupChecked);
            holder1.textview = convertView.findViewById(R.id.groupTitle);
            convertView.setTag(holder1);
        }else{
            holder1 = (Holder1) convertView.getTag();
        }
        //设置显示数据
        holder1.textview.setText(group.get(groupPosition).getSellerName());
        holder1.checkBox.setChecked(group.get(groupPosition).isgChecked());

        //设置一级标题的点击事件
        holder1.checkBox.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                boolean b = !group.get(groupPosition).isgChecked();
                Toast.makeText(context,b+"",Toast.LENGTH_SHORT).show();
                group.get(groupPosition).setgChecked(b);
                //拿到你点击孩子的父亲
                List<CartBean.DataBean.ListBean> listBeans = child.get(groupPosition);
                //遍历看看他有几个孩子
                for (int i=0;i<listBeans.size();i++){
                    listBeans.get(i).setcChecked(group.get(groupPosition).isgChecked());
                }
                changeListener.setState(isGroup());

                notifyDataSetChanged();
                sum();
            }
        });


        return convertView;
    }

    @Override
    public View getChildView(final int groupPosition, final int childPosition, final boolean isLastChild, View convertView, ViewGroup parent) {
        if(convertView==null){
            convertView = LayoutInflater.from(context).inflate(R.layout.item_listview, null);
            holder2 = new Holder2();
            holder2.imageView = convertView.findViewById(R.id.simpleDraw);
            holder2.checkBox = convertView.findViewById(R.id.childChecked);
            holder2.title = convertView.findViewById(R.id.childTitle);
            holder2.miaoshu= convertView.findViewById(R.id.miaoShu);
            holder2.price = convertView.findViewById(R.id.childPrice);
            holder2.yprice = convertView.findViewById(R.id.childPriceY);
            holder2.linearLayout = convertView.findViewById(R.id.linearLayoutItem);
            holder2.customLinearLayout = convertView.findViewById(R.id.customLinearLayout);
            holder2.bt2=convertView.findViewById(R.id.bt_del);

            convertView.setTag(holder2);
        }else{
            holder2 = (Holder2) convertView.getTag();
        }
        final CartBean.DataBean.ListBean listBean = child.get(groupPosition).get(childPosition);
        //设置显示数据
        holder2.checkBox.setChecked(listBean.iscChecked());
        holder2.title.setText(listBean.getTitle());
        holder2.price.setText("¥"+listBean.getPrice());
        holder2.yprice.setText("¥"+listBean.getBargainPrice());
        holder2.customLinearLayout.setText(listBean.getNum()+"");
        //中划线
        holder2.yprice.getPaint().setFlags(Paint. STRIKE_THRU_TEXT_FLAG);
        // 设置中划线并加清晰
        holder2.yprice.setPaintFlags(Paint. STRIKE_THRU_TEXT_FLAG|Paint.ANTI_ALIAS_FLAG);
        holder2.miaoshu.setText(listBean.getSubhead());
        String[] split = listBean.getImages().split("\\|");
        Glide.with(context).load(split[0]).into(holder2.imageView);
        holder2.checkBox.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                List<CartBean.DataBean.ListBean> listBeans = child.get(groupPosition);
                boolean b = !listBeans.get(childPosition).iscChecked();
                listBeans.get(childPosition).setcChecked(b);
                boolean isno = isChildChange(listBeans);
                //设置一级的状态
                group.get(groupPosition).setgChecked(isno);

                changeListener.setState(isChild());

                notifyDataSetChanged();
                sum();
            }
        });
        //加减号的点击事件
        holder2.customLinearLayout.getCount(new CustomLinearLayout.CountListener() {
            @Override
            public void setCount(int i) {
                listBean.setNum(i);
                sum();
            }
        });
        holder2.bt2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //其实就是删除集合
                List<CartBean.DataBean.ListBean> listBeans = child.get(groupPosition);
                if (listBeans.size() > 0) {
                    listBeans.remove(childPosition);
                }
                if (listBeans.size() == 0) {
                    child.remove(groupPosition);
                    group.remove(groupPosition);
                }
                //刷新列表
                notifyDataSetChanged();
            }
        });


        return convertView;
    }


    //计算的方法
    public void sum(){
        double price = 0;
        int count = 0;

        for (int i=0;i<group.size();i++){
            List<CartBean.DataBean.ListBean> list = group.get(i).getList();
            for (int j=0;j<list.size();j++){
                if(list.get(j).iscChecked()){
                    price +=list.get(j).getPrice()*list.get(j).getNum();
                    count +=list.get(j).getNum();
                }
            }
        }
        notifyDataSetChanged();
        //接口回调
        if(changeListener!=null) {
            changeListener.setText(price + "", count + "");
        }
    }




    ChangeListener changeListener;
    public void setChangeListener(ChangeListener changeListener) {
        this.changeListener = changeListener;
    }

    //接口传值,去改变全选的状态,设置商品的数量价格
    public interface ChangeListener{
        void setState(boolean flag);
        void setText(String price,String count);
    }


    //子类点击改变全选状态
    public boolean isChild(){
        for (int i=0;i<group.size();i++){
            List<CartBean.DataBean.ListBean> list = group.get(i).getList();
            for (int j=0;j<list.size();j++){
                if(!child.get(i).get(j).iscChecked()){
                    return false;
                }
            }
        }
        return true;
    }

    //父类点击改变全选的状态

    public boolean isGroup(){
        for (int i=0;i<group.size();i++){
            if(!group.get(i).isgChecked()){
                return false;
            }
        }
        return true;
    }

    //设置全选
    public void checkedAll(boolean flag){
        if(flag){
            for (int i=0;i<group.size();i++){
                List<CartBean.DataBean.ListBean> list = group.get(i).getList();
                group.get(i).setgChecked(true);
                for (int j=0;j<list.size();j++){
                    child.get(i).get(j).setcChecked(true);
                }
            }
        }else{
            for (int i=0;i<group.size();i++){
                List<CartBean.DataBean.ListBean> list = group.get(i).getList();
                group.get(i).setgChecked(false);
                for (int j=0;j<list.size();j++){
                    child.get(i).get(j).setcChecked(false);
                }
            }
        }
        notifyDataSetChanged();
        sum();
    }


    //如果有意子类没选中就将父类的状态改为true
    public boolean isChildChange(   List<CartBean.DataBean.ListBean> listBeans){
        for (int i=0;i<listBeans.size();i++){
            if(!listBeans.get(i).iscChecked()){
                return false;
            }
        }
        return true;
    }

    @Override
    public boolean isChildSelectable(int groupPosition, int childPosition) {
        return true;
    }

    class Holder1{
        CheckBox checkBox;
        TextView textview;
    }

    class Holder2{
        LinearLayout linearLayout;
        CustomLinearLayout customLinearLayout;
        CheckBox checkBox;
        ImageView imageView;
        TextView title;
        TextView miaoshu;
        TextView price;
        TextView yprice;
        Button bt2;
    }
}

需要的两个xml文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:orientation="horizontal"
    android:layout_height="match_parent">
    <CheckBox
        android:id="@+id/groupChecked"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
    <TextView
        android:id="@+id/groupTitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="标题"
        />
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:fresco="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:orientation="horizontal"
    android:id="@+id/linearLayoutItem"
    android:gravity="center_vertical"
    android:layout_height="match_parent">

    <CheckBox
        android:layout_marginLeft="20dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/childChecked"
        />
    <ImageView

        android:layout_marginLeft="5dp"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:id="@+id/simpleDraw"
        />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:orientation="vertical">

        <TextView
            android:id="@+id/childTitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="标题"
            android:textSize="16sp"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/miaoShu"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingBottom="20dp"
            android:paddingTop="20dp"
            android:text="描述" />

        <Button
            android:id="@+id/bt_del"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            android:text="删除" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_vertical"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/childPrice"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="价格"
                android:textColor="#FCB950"
                android:textSize="16sp" />

            <TextView
                android:id="@+id/childPriceY"
                android:layout_width="0dp"

                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="优惠" />


            <com.bwie.yuekao_demo.util.CustomLinearLayout
                android:id="@+id/customLinearLayout"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">

            </com.bwie.yuekao_demo.util.CustomLinearLayout>

        </LinearLayout>

    </LinearLayout>

</LinearLayout>

订单的适配器

public class DingAdapter extends RecyclerView.Adapter {
    Context context;
    List<DingDBean.DataBean> data;

    public DingAdapter(Context context, List<DingDBean.DataBean> data) {
        this.context = context;
        this.data = data;
    }



    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.fragment_item,null);
        return new ViewHolder1(view);
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
        final ViewHolder1 holder1 = (ViewHolder1) holder;
        //设置数据
        holder1.textView.setText(data.get(position).getTitle());
        holder1.price.setText(data.get(position).getPrice()+"");
        holder1.time.setText(data.get(position).getCreatetime()+"");
        //根据不同的状态动态的设置
        int status = data.get(position).getStatus();
        if(status==0){
            holder1.textView1.setText("待支付");
            holder1.btn.setText("待支付");
        }else if(status==1){
            holder1.textView1.setText("已支付");
            holder1.btn.setText("已支付");
        }else{
            holder1.textView1.setText("已取消");
            holder1.btn.setText("已取消");
        }
        //点击改变按钮事件
        holder1.btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String btn = holder1.btn.getText().toString();
                String text = holder1.textView1.getText().toString();
                if(btn.equals("待支付")){
                    holder1.btn.setText("已取消");
                    holder1.textView1.setText("已取消");

                }else if(btn.equals("已取消")){
                    Toast.makeText(context,"已取消",Toast.LENGTH_SHORT).show();
                }else{
                    Toast.makeText(context,"已支付",Toast.LENGTH_SHORT).show();
                }
            }
        });

        //点击删除按钮事件
        holder1.relativeLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //弹出窗
                AlertDialog.Builder alertDialog = new AlertDialog.Builder(context);
                alertDialog.setTitle("警告");
                alertDialog.setMessage("确定删除"+data.get(position).getTitle()+"吗?");
                alertDialog.setNegativeButton("取消", new AlertDialog.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {

                    }
                });
                alertDialog.setPositiveButton("确定", new AlertDialog.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        data.remove(position);
                        notifyDataSetChanged();
                    }
                });
                alertDialog.show();
            }
        });
    }

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


    class ViewHolder1 extends RecyclerView.ViewHolder {
        TextView textView;
        TextView textView1;
        RelativeLayout relativeLayout;
        Button btn;
        TextView price;
        TextView time;
        public ViewHolder1(View itemView) {
            super(itemView);
            textView=itemView.findViewById(R.id.titleView);
            textView1 = itemView.findViewById(R.id.textView);
            price = itemView.findViewById(R.id.price);
            time = itemView.findViewById(R.id.time);
            btn = itemView.findViewById(R.id.btn);
            relativeLayout = itemView.findViewById(R.id.relative);

        }
    }
}
订单所需的xml文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:id="@+id/relative"
    android:orientation="horizontal"
    android:layout_height="match_parent">
    <LinearLayout
        android:layout_centerVertical="true"
        android:orientation="vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <TextView
            android:layout_centerVertical="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="sada"
            android:id="@+id/titleView"
            />
        <TextView
            android:layout_marginTop="10dp"
            android:layout_marginBottom="10dp"
            android:text="价格"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/price"
            />
        <TextView
            android:text="时间"
            android:id="@+id/time"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />


    </LinearLayout>

    <LinearLayout
        android:layout_centerVertical="true"
        android:layout_alignParentRight="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        >
        <TextView
            android:textColor="#f00"
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="待支付"

            />
        <Button
            android:layout_marginTop="10dp"
            android:id="@+id/btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="待支付"
            />
    </LinearLayout>

</RelativeLayout>
MyPopupWindow:

public class MyPopupWindow {
    private static PopupWindow mPopWindow;

    public static void showPopupWindow(final ViewPager mViewPager, Context context, ImageView mImageView) {
        View contentView = LayoutInflater.from(context).inflate(R.layout.popupwindow, null);
        mPopWindow = new PopupWindow(contentView);
        mPopWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
        mPopWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);

        TextView tv1 = (TextView)contentView.findViewById(R.id.pop_computer);
        TextView tv2 = (TextView)contentView.findViewById(R.id.pop_financial);
        TextView tv3 = (TextView)contentView.findViewById(R.id.pop_manage);
        tv1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mViewPager.setCurrentItem(1,true);
                mPopWindow.dismiss();

            }
        });
        tv2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mViewPager.setCurrentItem(2,true);
                mPopWindow.dismiss();

            }
        });
        tv3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mViewPager.setCurrentItem(3,true);
                mPopWindow.dismiss();

            }
        });
        mPopWindow.showAsDropDown(mImageView);


    }
}
布局文件:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#ffffff"
    android:orientation="vertical"
    android:paddingBottom="2dp">


    <TextView
        android:textSize="20sp"
        android:id="@+id/pop_computer"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="待支付"/>



    <TextView
        android:textSize="20sp"

        android:id="@+id/pop_financial"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="已支付"/>


        />

    <TextView
        android:textSize="20sp"

        android:id="@+id/pop_manage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:text="已取消"/>



</LinearLayout>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值