Goods

作者: Mx丶 | 来源:发表于2017-12-10 19:09 被阅读0次
    MainActivity实现的一些结算功能。
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.view.View;
    import android.widget.CheckBox;
    import android.widget.ExpandableListView;
    import android.widget.TextView;
    
    import org.greenrobot.eventbus.EventBus;
    import org.greenrobot.eventbus.Subscribe;
    
    import java.util.List;
    
    import mvpframework.bwie.com.a1509agoodcart.R;
    import mvpframework.bwie.com.a1509agoodcart.adapter.MyAdapter;
    import mvpframework.bwie.com.a1509agoodcart.bean.GoosBean;
    import mvpframework.bwie.com.a1509agoodcart.eventbusevent.MessageEvent;
    import mvpframework.bwie.com.a1509agoodcart.eventbusevent.PriceAndCountEvent;
    import mvpframework.bwie.com.a1509agoodcart.presenter.MainPresenter;
    
    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);
            EventBus.getDefault().register(this);
            initView();
            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() + "");
        }
    }
    
    

    两个。。。。。

    import java.util.List;
    
    
    /**
     * Created by peng on 2017/11/16.
     */
    
    public interface IMainActivity {
        public void showList(List<GoosBean.DataBean> groupList, List<List<GoosBean.DataBean.DatasBean>> childList);
    }
    
    

    p层

    
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * Created by peng on 2017/11/16.
     */
    
    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) {
    
                }
            });
    
        }
    }
    
    
    /**
     * Created by peng on 2017/11/16.
     */
    
    public interface OnNetListener<T> {
        public void onSuccess(T t);
    
        public void onFailure(Exception e);
    }
    
    
    
    import okhttp3.Callback;
    import okhttp3.OkHttpClient;
    import okhttp3.Request;
    import okhttp3.logging.HttpLoggingInterceptor;
    
    /**
     * Created by peng on 2017/11/16.
     */
    
    public class HttpUtils {
        private static volatile HttpUtils httpUtils;
        private final OkHttpClient client;
    
        private HttpUtils() {
            HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
            logging.setLevel(HttpLoggingInterceptor.Level.BODY);
            client = new OkHttpClient.Builder()
                    .addInterceptor(logging)
                    .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);
        }
    }
    
    
    MainModel:
    
    import android.os.Handler;
    import android.os.Looper;
    
    import com.google.gson.Gson;
    
    import java.io.IOException;
    
    import
    import okhttp3.Call;
    import okhttp3.Callback;
    import okhttp3.Response;
    
    /**
     * Created by peng on 2017/11/16.
     */
    
    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);
    }
    
    eventbus。。。。
    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;
        }
    }
    MessageEvent。。。
    public class MessageEvent {
        private boolean checked;
    
        public boolean isChecked() {
            return checked;
        }
    
        public void setChecked(boolean checked) {
            this.checked = checked;
        }
    }
    
    
    
    import android.content.Context;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseExpandableListAdapter;
    import android.widget.CheckBox;
    import android.widget.ImageView;
    import android.widget.TextView;
    
    import org.greenrobot.eventbus.EventBus;
    
    import java.util.List;
    
    import mvpframework.bwie.com.a1509agoodcart.R;
    import mvpframework.bwie.com.a1509agoodcart.bean.GoosBean;
    import mvpframework.bwie.com.a1509agoodcart.eventbusevent.MessageEvent;
    import mvpframework.bwie.com.a1509agoodcart.eventbusevent.PriceAndCountEvent;
    
    /**
     * Created by peng on 2017/11/16.
     */
    
    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 = view.findViewById(R.id.cb_parent);
                holder.tv_number = 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 = view.findViewById(R.id.cb_child);
                holder.tv_tel = view.findViewById(R.id.tv_tel);
                holder.tv_content = view.findViewById(R.id.tv_content);
                holder.tv_time = view.findViewById(R.id.tv_time);
                holder.tv_price = view.findViewById(R.id.tv_pri);
                holder.tv_del = view.findViewById(R.id.tv_del);
                holder.iv_add = view.findViewById(R.id.iv_add);
                holder.iv_del = view.findViewById(R.id.iv_del);
                holder.tv_num = 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);
                    }
                }
            });
            //删除
            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();
        }
    
    }
    
    

    相关文章

      网友评论

          本文标题:Goods

          本文链接:https://www.haomeiwen.com/subject/pjvvixtx.html