zoukankan      html  css  js  c++  java
  • 终极MVP二级购物车

    所需要的依赖

     compile 'com.android.support:appcompat-v7:24.2.1'
        testCompile 'junit:junit:4.12'
        compile 'com.squareup.okhttp3:okhttp:3.9.0'
        compile 'com.squareup.okhttp3:logging-interceptor:3.9.0'
        compile 'com.google.code.gson:gson:2.8.2'
        compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
        compile 'org.greenrobot:eventbus:3.1.1'
        compile 'com.android.support.constraint:constraint-layout:1.0.2'

    net下HttpUtils  GET请求

    public class HttpUtils {
        private static volatile HttpUtils httpUtils;
        private final OkHttpClient client;
    
        private HttpUtils(){
            HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
            loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
            client = new OkHttpClient.Builder()
                    .addInterceptor(loggingInterceptor)
                    .build();
        }
        public static HttpUtils getHttpUtils(){
            if(httpUtils==null){
                synchronized (HttpUtils.class){
                    if (httpUtils==null){
                        httpUtils = new HttpUtils();
                    }
                }
            }
            return httpUtils;
        }
        /**
         * GET请求
         *
         * @param url
         * @param callback
         */
        public void doGet(String url, Callback callback){
            Request request = new Request.Builder().url(url).build();
            client.newCall(request).enqueue(callback);
        }
    }
    

      OnNetListener接口回调

    public interface OnNetListener<T> {
        public void onSuccess(T t);
        public void onFailure(Exception e);
    }
    

      Api

    public interface Api {
        public static final String url = "http://result.eolinker.com/iYXEPGn4e9c6dafce6e5cdd23287d2bb136ee7e9194d3e9?uri=evaluation";
    }
    

      model层  MainModel

    public class MainModel implements IMainModel{
        private Handler handler = new Handler(Looper.getMainLooper());
    
        public void getGoods(final OnNetListener<GoosBean> onNetListener){
            HttpUtils.getHttpUtils().doGet(Api.url, new Callback() {
                @Override
                public void onFailure(Call call, IOException e) {
    
                }
    
                @Override
                public void onResponse(Call call, Response response) throws IOException {
                    String string = response.body().string();
                    final GoosBean goosBean = new Gson().fromJson(string, GoosBean.class);
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            onNetListener.onSuccess(goosBean);
                        }
                    });
                }
            });
        }
    }
    

      IMainModel

    public interface IMainModel {
        public void getGoods(OnNetListener<GoosBean> onNetListener);
    }
    

      presenter层  MainPresenter

    public class MainPresenter {
        private final IMainModel iMainModel;
        private final IMainActivity iMainActivity;
        public MainPresenter(IMainActivity iMainActivity) {
            this.iMainActivity = iMainActivity;
            iMainModel = new MainModel() ;
        }
    
        public void getGoods(){
    
            iMainModel.getGoods(new OnNetListener<GoosBean>() {
                @Override
                public void onSuccess(GoosBean goosBean) {
                    //List<GoosBean.DataBean> groupList, List<List<GoosBean.DataBean.DatasBean>> childList
                    List<GoosBean.DataBean> dataBean = goosBean.getData();
                    List<List<GoosBean.DataBean.DatasBean>> childList = new ArrayList<List<GoosBean.DataBean.DatasBean>>();
                    for (int i = 0; i < dataBean.size(); i++) {
                        List<GoosBean.DataBean.DatasBean> datas = dataBean.get(i).getDatas();
                        childList.add(datas);
                    }
                    iMainActivity.showList(dataBean, childList);
                }
    
                @Override
                public void onFailure(Exception e) {
    
                }
            });
        }
    
    }
    

      view层  MainActivity

    public class MainActivity extends AppCompatActivity implements IMainActivity{
    
        private ExpandableListView mElv;
        private CheckBox mCheckbox2;
        /**
         * 0
         */
        private TextView mTvPrice;
        /**
         * 结算(0)
         */
        private TextView mTvNum;
        private MyAdapter adapter;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            initView();
            EventBus.getDefault().register(this);
            new MainPresenter(this).getGoods();
            mCheckbox2.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    adapter.changeAllListCbState(mCheckbox2.isChecked());
                }
            });
        }
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
            EventBus.getDefault().unregister(this);
        }
    
        private void initView() {
            mElv = (ExpandableListView) findViewById(R.id.elv);
            mCheckbox2 = (CheckBox) findViewById(R.id.checkbox2);
            mTvPrice = (TextView) findViewById(R.id.tv_price);
            mTvNum = (TextView) findViewById(R.id.tv_num);
        }
    
        @Override
        public void showList(List<GoosBean.DataBean> groupList, List<List<GoosBean.DataBean.DatasBean>> childList) {
            adapter = new MyAdapter(this, groupList, childList);
            mElv.setAdapter(adapter);
            mElv.setGroupIndicator(null);
            //默认让其全部展开
            for (int i = 0; i < groupList.size(); i++) {
                mElv.expandGroup(i);
            }
        }
        @Subscribe
        public void onMessageEvent(MessageEvent event){
            mCheckbox2.setChecked(event.isChecked());
    
        }
        @Subscribe
        public void onMessageEvent(PriceAndCountEvent event){
    
            mTvNum.setText("结算(" + event.getCount() + ")");
            mTvPrice.setText(event.getPrice()+"");
        }
    
    }
    

      IMainActivity

    public interface IMainActivity {
        public void showList(List<GoosBean.DataBean> groupList, List<List<GoosBean.DataBean.DatasBean>> childList);
    }
    

      adapter下 MyAdapter

    public class MyAdapter extends BaseExpandableListAdapter {
        private Context context;
        private List<GoosBean.DataBean> groupList;
        private List<List<GoosBean.DataBean.DatasBean>> childList;
        private final LayoutInflater inflater;
    
        public MyAdapter(Context context, List<GoosBean.DataBean> groupList, List<List<GoosBean.DataBean.DatasBean>> childList) {
            this.context = context;
            this.groupList = groupList;
            this.childList = childList;
            inflater = LayoutInflater.from(context);
    
        }
    
        @Override
        public int getGroupCount() {
            return groupList.size();
        }
    
        @Override
        public int getChildrenCount(int groupPosition) {
            return childList.get(groupPosition).size();
        }
    
        @Override
        public Object getGroup(int groupPosition) {
            return groupList.get(groupPosition);
        }
    
        @Override
        public Object getChild(int groupPosition, int childPosition) {
            return childList.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) {
            View view;
            final GroupViewHolder holder;
            if (convertView == null) {
                holder = new GroupViewHolder();
                view = inflater.inflate(R.layout.item_parent_market, null);
                holder.cbGroup = (CheckBox) view.findViewById(R.id.cb_parent);
                holder.tv_number = (TextView) view.findViewById(R.id.tv_number);
                view.setTag(holder);
            } else {
                view = convertView;
                holder = (GroupViewHolder) view.getTag();
            }
            final GoosBean.DataBean dataBean = groupList.get(groupPosition);
            holder.cbGroup.setChecked(dataBean.isChecked());
            holder.tv_number.setText(dataBean.getTitle());
            //一级checkbox
            holder.cbGroup.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    dataBean.setChecked(holder.cbGroup.isChecked());
                    changeChildCbState(groupPosition, holder.cbGroup.isChecked());
                    EventBus.getDefault().post(compute());
                    changeAllCbState(isAllGroupCbSelected());
                    notifyDataSetChanged();
                }
            });
            return view;
        }
    
        @Override
        public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
            View view;
            final ChildViewHolder holder;
            if (convertView == null) {
                holder = new ChildViewHolder();
                view = inflater.inflate(R.layout.item_child_market, null);
                holder.cbChild = (CheckBox) view.findViewById(R.id.cb_child);
                holder.tv_tel = (TextView) view.findViewById(R.id.tv_tel);
                holder.tv_content = (TextView) view.findViewById(R.id.tv_content);
                holder.tv_time = (TextView) view.findViewById(R.id.tv_time);
                holder.tv_del = (TextView) view.findViewById(R.id.tv_del);
                holder.iv_add = (ImageView) view.findViewById(R.id.iv_add);
                holder.iv_del = (ImageView) view.findViewById(R.id.iv_del);
                holder.tv_price = (TextView) view.findViewById(R.id.tv_pri);
                holder.tv_num = (TextView) view.findViewById(R.id.tv_num);
                view.setTag(holder);
            } else {
                view = convertView;
                holder = (ChildViewHolder) view.getTag();
            }
            final GoosBean.DataBean.DatasBean datasBean = childList.get(groupPosition).get(childPosition);
            holder.cbChild.setChecked(datasBean.isChecked());
            holder.tv_tel.setText(datasBean.getType_name());
            holder.tv_content.setText(datasBean.getMsg());
            holder.tv_time.setText(datasBean.getAdd_time());
            holder.tv_price.setText(datasBean.getPrice() + "");
            holder.tv_num.setText(datasBean.getNum() + "");
    
    
            //二级checkbox
            holder.cbChild.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //设置该条目对象里的checked属性值
                    datasBean.setChecked(holder.cbChild.isChecked());
                    PriceAndCountEvent priceAndCountEvent = compute();
                    EventBus.getDefault().post(priceAndCountEvent);
    
                    if (holder.cbChild.isChecked()) {
                        //当前checkbox是选中状态
                        if (isAllChildCbSelected(groupPosition)) {
                            changGroupCbState(groupPosition, true);
                            changeAllCbState(isAllGroupCbSelected());
                        }
                    } else {
                        changGroupCbState(groupPosition, false);
                        changeAllCbState(isAllGroupCbSelected());
                    }
                    notifyDataSetChanged();
                }
            });
    
            //加号
            holder.iv_add.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    int num = datasBean.getNum();
                    holder.tv_num.setText(++num + "");
                    datasBean.setNum(num);
                    if (holder.cbChild.isChecked()) {
                        PriceAndCountEvent priceAndCountEvent = compute();
                        EventBus.getDefault().post(priceAndCountEvent);
                    }
                }
            });
    
            //减号
            holder.iv_del.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    int num = datasBean.getNum();
                    if (num == 1) {
                        return;
                    }
                    holder.tv_num.setText(--num + "");
                    datasBean.setNum(num);
                    if (holder.cbChild.isChecked()) {
                        PriceAndCountEvent priceAndCountEvent = compute();
                        EventBus.getDefault().post(priceAndCountEvent);
                    }
                }
            });
            //二级checkbox
            holder.tv_del.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //设置该条目对象里的checked属性值
                    datasBean.setChecked(holder.cbChild.isChecked());
                    PriceAndCountEvent priceAndCountEvent = compute();
                    EventBus.getDefault().post(priceAndCountEvent);
    
                    if (holder.cbChild.isChecked()) {
                        //当前checkbox是选中状态
                        if (isAllChildCbSelected(groupPosition)) {
                            changGroupCbState(groupPosition, true);
                            changeAllCbState(isAllGroupCbSelected());
                        }
                    } else {
                        changGroupCbState(groupPosition, false);
                        changeAllCbState(isAllGroupCbSelected());
                    }
                    notifyDataSetChanged();
    
                }
            });
            //删除
            holder.tv_del.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    List<GoosBean.DataBean.DatasBean> datasBeen = childList.get(groupPosition);
                    GoosBean.DataBean.DatasBean remove = datasBeen.remove(childPosition);
                    if (datasBeen.size() == 0) {
                        childList.remove(groupPosition);
                        groupList.remove(groupPosition);
                    }
                    EventBus.getDefault().post(compute());
                    notifyDataSetChanged();
                }
            });
            return view;
        }
    
        @Override
        public boolean isChildSelectable(int groupPosition, int childPosition) {
            return true;
        }
    
        class GroupViewHolder {
            CheckBox cbGroup;
            TextView tv_number;
        }
    
        class ChildViewHolder {
            CheckBox cbChild;
            TextView tv_tel;
            TextView tv_content;
            TextView tv_time;
            TextView tv_price;
            TextView tv_del;
            ImageView iv_del;
            ImageView iv_add;
            TextView tv_num;
        }
    
        /**
         * 改变全选的状态
         *
         * @param flag
         */
        private void changeAllCbState(boolean flag) {
            MessageEvent messageEvent = new MessageEvent();
            messageEvent.setChecked(flag);
            EventBus.getDefault().post(messageEvent);
        }
    
        /**
         * 改变一级列表checkbox状态
         *
         * @param groupPosition
         */
        private void changGroupCbState(int groupPosition, boolean flag) {
            GoosBean.DataBean dataBean = groupList.get(groupPosition);
            dataBean.setChecked(flag);
        }
    
    
    
        /**
         * 改变二级列表checkbox状态
         *
         * @param groupPosition
         * @param flag
         */
        private void changeChildCbState(int groupPosition, boolean flag) {
            List<GoosBean.DataBean.DatasBean> datasBeen = childList.get(groupPosition);
            for (int i = 0; i < datasBeen.size(); i++) {
                GoosBean.DataBean.DatasBean datasBean = datasBeen.get(i);
                datasBean.setChecked(flag);
            }
        }
    
        /**
         * 判断一级列表是否全部选中
         *
         * @return
         */
        private boolean isAllGroupCbSelected() {
            for (int i = 0; i < groupList.size(); i++) {
                GoosBean.DataBean dataBean = groupList.get(i);
                if (!dataBean.isChecked()) {
                    return false;
                }
            }
            return true;
        }
    
        /**
         * 判断二级列表是否全部选中
         *
         * @param groupPosition
         * @return
         */
        private boolean isAllChildCbSelected(int groupPosition) {
            List<GoosBean.DataBean.DatasBean> datasBeen = childList.get(groupPosition);
            for (int i = 0; i < datasBeen.size(); i++) {
                GoosBean.DataBean.DatasBean datasBean = datasBeen.get(i);
                if (!datasBean.isChecked()) {
                    return false;
                }
            }
            return true;
        }
    
        /**
         * 计算列表中,选中的钱和数量
         */
        private PriceAndCountEvent compute() {
            int count = 0;
            int price = 0;
            for (int i = 0; i < childList.size(); i++) {
                List<GoosBean.DataBean.DatasBean> datasBeen = childList.get(i);
                for (int j = 0; j < datasBeen.size(); j++) {
                    GoosBean.DataBean.DatasBean datasBean = datasBeen.get(j);
                    if (datasBean.isChecked()) {
                        price += datasBean.getNum() * datasBean.getPrice();
                        count += datasBean.getNum();
                    }
                }
            }
            PriceAndCountEvent priceAndCountEvent = new PriceAndCountEvent();
            priceAndCountEvent.setCount(count);
            priceAndCountEvent.setPrice(price);
            return priceAndCountEvent;
        }
    
    
        /**
         * 设置全选、反选
         *
         * @param flag
         */
        public void changeAllListCbState(boolean flag) {
            for (int i = 0; i < groupList.size(); i++) {
                changGroupCbState(i, flag);
                changeChildCbState(i, flag);
            }
            EventBus.getDefault().post(compute());
            notifyDataSetChanged();
        }
    }
    

      evenBusevent下  MessageEvent

    public class MessageEvent {
        private boolean checked;
    
        public boolean isChecked() {
            return checked;
        }
    
        public void setChecked(boolean checked) {
            this.checked = checked;
        }
    }
    

      priceAndCountEvent

    public class PriceAndCountEvent {
        private int price;
        private int count;
    
        public int getPrice() {
            return price;
        }
    
        public void setPrice(int price) {
            this.price = price;
        }
    
        public int getCount() {
            return count;
        }
    
        public void setCount(int count) {
            this.count = count;
        }
    }
    

      GoosBean

    public class GoosBean {
    
        /**
         * code : 200
         * data : [{"datas":[{"add_time":"2016-12-10 14:54:58","cart_id":"445162","house_id":"1","msg":"购买渠道:大陆国行","price":500,"type_name":"苹果 iPhone 6(白金色)","type_sn_id":"ggh"},{"add_time":"2016-12-10 14:55:18","cart_id":"445163","house_id":"1","msg":"购买渠道:水货无锁","price":1000,"type_name":"苹果 iPhone 7 (亮黑色)","type_sn_id":"tgg"}],"title":"苹果","title_id":"59280"},{"datas":[{"add_time":"2016-12-10 14:54:58","cart_id":"445162","house_id":"1","msg":"边框背板:全新未使用","price":50,"type_name":"小米4s (白金色)","type_sn_id":"ggh"},{"add_time":"2016-12-10 14:55:18","cart_id":"445163","house_id":"1","msg":"屏幕性能:色差/亮点/轻微发黄","price":100,"type_name":"小米5s (亮黑色)","type_sn_id":"tgg"}],"title":"小米","title_id":"59279"},{"datas":[{"add_time":"2016-12-10 14:54:58","cart_id":"445162","house_id":"1","msg":"边框背板:全新未使用","price":50,"type_name":"三星 (白金色)","type_sn_id":"ggh"},{"add_time":"2016-12-10 14:55:18","cart_id":"445163","house_id":"1","msg":"屏幕性能:色差/亮点/轻微发黄","price":100,"type_name":"三星 (亮黑色)","type_sn_id":"tgg"}],"title":"三星","title_id":"59279"},{"datas":[{"add_time":"2016-12-10 14:54:58","cart_id":"445162","house_id":"1","msg":"边框背板:全新未使用","price":50,"type_name":"华为 (白金色)","type_sn_id":"ggh"},{"add_time":"2016-12-10 14:55:18","cart_id":"445163","house_id":"1","msg":"屏幕性能:色差/亮点/轻微发黄","price":100,"type_name":"华为 (亮黑色)","type_sn_id":"tgg"},{"add_time":"2016-12-10 4:55:28","cart_id":"445164","house_id":"1","msg":"屏幕性能:色差/亮点/轻微发黄","price":150,"type_name":"华为 (纯黑色)","type_sn_id":"hgg"}],"title":"华为","title_id":"59279"}]
         * flag : Success
         * msg : 描述
         */
    
        private String code;
        private String flag;
        private String msg;
        private List<DataBean> data;
    
        public String getCode() {
            return code;
        }
    
        public void setCode(String code) {
            this.code = code;
        }
    
        public String getFlag() {
            return flag;
        }
    
        public void setFlag(String flag) {
            this.flag = flag;
        }
    
        public String getMsg() {
            return msg;
        }
    
        public void setMsg(String msg) {
            this.msg = msg;
        }
    
        public List<DataBean> getData() {
            return data;
        }
    
        public void setData(List<DataBean> data) {
            this.data = data;
        }
    
        public static class DataBean {
            /**
             * datas : [{"add_time":"2016-12-10 14:54:58","cart_id":"445162","house_id":"1","msg":"购买渠道:大陆国行","price":500,"type_name":"苹果 iPhone 6(白金色)","type_sn_id":"ggh"},{"add_time":"2016-12-10 14:55:18","cart_id":"445163","house_id":"1","msg":"购买渠道:水货无锁","price":1000,"type_name":"苹果 iPhone 7 (亮黑色)","type_sn_id":"tgg"}]
             * title : 苹果
             * title_id : 59280
             */
            private boolean checked;
            private String title;
            private String title_id;
            private List<DatasBean> datas;
    
            public boolean isChecked() {
                return checked;
            }
    
            public void setChecked(boolean checked) {
                this.checked = checked;
            }
    
            public String getTitle() {
                return title;
            }
    
            public void setTitle(String title) {
                this.title = title;
            }
    
            public String getTitle_id() {
                return title_id;
            }
    
            public void setTitle_id(String title_id) {
                this.title_id = title_id;
            }
    
            public List<DatasBean> getDatas() {
                return datas;
            }
    
            public void setDatas(List<DatasBean> datas) {
                this.datas = datas;
            }
    
            public static class DatasBean {
                /**
                 * add_time : 2016-12-10 14:54:58
                 * cart_id : 445162
                 * house_id : 1
                 * msg : 购买渠道:大陆国行
                 * price : 500
                 * type_name : 苹果 iPhone 6(白金色)
                 * type_sn_id : ggh
                 */
                private boolean checked;
                private int num = 1;
                private String add_time;
                private String cart_id;
                private String house_id;
                private String msg;
                private int price;
                private String type_name;
                private String type_sn_id;
    
                public int getNum() {
                    return num;
                }
    
                public void setNum(int num) {
                    this.num = num;
                }
    
                public boolean isChecked() {
                    return checked;
                }
    
                public void setChecked(boolean checked) {
                    this.checked = checked;
                }
    
                public String getAdd_time() {
                    return add_time;
                }
    
                public void setAdd_time(String add_time) {
                    this.add_time = add_time;
                }
    
                public String getCart_id() {
                    return cart_id;
                }
    
                public void setCart_id(String cart_id) {
                    this.cart_id = cart_id;
                }
    
                public String getHouse_id() {
                    return house_id;
                }
    
                public void setHouse_id(String house_id) {
                    this.house_id = house_id;
                }
    
                public String getMsg() {
                    return msg;
                }
    
                public void setMsg(String msg) {
                    this.msg = msg;
                }
    
                public int getPrice() {
                    return price;
                }
    
                public void setPrice(int price) {
                    this.price = price;
                }
    
                public String getType_name() {
                    return type_name;
                }
    
                public void setType_name(String type_name) {
                    this.type_name = type_name;
                }
    
                public String getType_sn_id() {
                    return type_sn_id;
                }
    
                public void setType_sn_id(String type_sn_id) {
                    this.type_sn_id = type_sn_id;
                }
            }
        }
    }
    

     布局  activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        >
    
        <TextView
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:background="#990000ff"
            android:gravity="center"
            android:text="购物车"
            android:textColor="#ff3660"
            android:textSize="25sp" />
    
        <ExpandableListView
            android:id="@+id/elv"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1" />
    
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:layout_alignParentBottom="true"
            android:background="@android:color/white"
            android:gravity="center_vertical">
    
            <CheckBox
                android:id="@+id/checkbox2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                android:layout_marginLeft="10dp"
                android:focusable="false" />
    
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="50dp"
                android:layout_centerVertical="true"
                android:layout_marginLeft="10dp"
                android:layout_toRightOf="@+id/checkbox2"
                android:gravity="center_vertical"
                android:text="全选"
                android:textSize="20sp" />
    
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:orientation="horizontal">
    
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dp"
                    android:text="合计 :" />
    
    
                <TextView
                    android:id="@+id/tv_price"
                    android:layout_width="wrap_content"
                    android:layout_height="50dp"
                    android:layout_marginLeft="10dp"
                    android:paddingRight="10dp"
                    android:text="0"
                    android:textColor="@android:color/holo_red_light" />
    
    
                <TextView
                    android:id="@+id/tv_num"
                    android:layout_width="wrap_content"
                    android:layout_height="50dp"
                    android:background="@android:color/holo_red_dark"
                    android:gravity="center"
                    android:padding="10dp"
                    android:text="结算(0)"
                    android:textColor="@android:color/white" />
            </LinearLayout>
        </RelativeLayout>
    </LinearLayout>
    

      itm_child_market.xml

    <?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="match_parent"
        android:background="@android:color/darker_gray"
        android:gravity="center_vertical"
        android:orientation="horizontal">
    
        <CheckBox
    
            android:id="@+id/cb_child"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="30dp"
            android:layout_marginLeft="40dp"
            android:layout_marginTop="30dp"
            android:focusable="false" />
    
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical">
    
            <TextView
                android:id="@+id/tv_tel"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="20dp"
                android:text="iphone6" />
    
            <TextView
                android:id="@+id/tv_content"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="20dp"
                android:text="什么手机" />
    
            <TextView
                android:id="@+id/tv_time"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="20dp"
                android:text="2016-12-10" />
        </LinearLayout>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="vertical">
    
            <TextView
                android:id="@+id/tv_pri"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
    
                android:text="¥3000.00" />
    
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center_vertical">
    
                <ImageView
                    android:id="@+id/iv_del"
                    android:layout_width="20dp"
                    android:layout_height="20dp"
                    android:src="@drawable/shopcart_minus_grey" />
    
                <TextView
                    android:id="@+id/tv_num"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="5dp"
                    android:background="@drawable/shopcart_add_btn"
                    android:paddingBottom="2dp"
                    android:paddingLeft="20dp"
                    android:paddingRight="20dp"
                    android:paddingTop="2dp"
                    android:text="1" />
    
                <ImageView
                    android:id="@+id/iv_add"
                    android:layout_width="20dp"
                    android:layout_height="20dp"
                    android:layout_marginLeft="5dp"
                    android:src="@drawable/shopcart_add_red" />
    
            </LinearLayout>
    
        </LinearLayout>
    
        <TextView
            android:id="@+id/tv_del"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="删除" />
    </LinearLayout>
    

     item_parent_market.xml

    <?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="100dp"
        android:gravity="center_vertical"
        android:orientation="horizontal">
    
        <CheckBox
            android:id="@+id/cb_parent"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="30dp"
            android:layout_marginLeft="20dp"
            android:layout_marginTop="30dp"
            android:focusable="false" />
    
        <TextView
            android:id="@+id/tv_sign"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            android:text="标记" />
    
        <TextView
            android:id="@+id/tv_number"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            android:text="12345678" />
    
    </LinearLayout>
    

      

  • 相关阅读:
    程序员,你有多久没关爱自己了?
    如何优化 Java 性能?
    想让安卓 APP 如丝般顺滑?
    用 OneAPM Cloud Insight 监控 Docker 性能
    盘点 OSX 上最佳的 DevOps 工具
    荣誉,还是苦逼?| 也议全栈工程师和DevOps
    小程序基础知识点讲解-WXML + WXSS + JS,生命周期
    第二十一节:Java语言基础-关键字,标识符,注释,常量和变量,运算符
    第二十一节:Java语言基础-关键字,标识符,注释,常量和变量,运算符
    第二十一节:Java语言基础-关键字,标识符,注释,常量和变量,运算符
  • 原文地址:https://www.cnblogs.com/wsq110/p/7878780.html
Copyright © 2011-2022 走看看