电商订单模块实现思路

电商订单

一般订单我们都要遇到 一个店铺 购买多个商品 需要展现的结果 类似于淘宝

我们用一个recyclerview 实现, 把一个店铺看成 三个不同的item, 店铺信息头部 是一个 item 商品是内容, 价格什么的是底部item

1:从服务器获取数据:

bean.png

**获取数据如上 : 我们需要获取整个界面的大订单 依次存储到一个新集合中 **

// 
public class OrderDataHelper {
    public static Collection<Object> getDataAfterHandle(List<OrdersBean.DataBean.ListBean> listBean) {
        List<Object> dataList = new ArrayList<Object>();
        //遍历整个大订单
        for (OrdersBean.DataBean.ListBean bean : listBean) {//循环依次的把 头 商品 底部信息存储到集合
      
            int ordersId = bean.getOrdersId();
            int pharmacyId = bean.getPharmacyId();
            String pharmacyName = bean.getPharmacyName();
            //头  创建一个对象存储头的数据
            OrderPayInfo orderPayInfo = new OrderPayInfo();
            orderPayInfo.setOrdersId(ordersId);
            orderPayInfo.setPharmacyId(pharmacyId);
            orderPayInfo.setPharmacyName(bean.getPharmacyName());
            orderPayInfo.setState(bean.getState());
            dataList.add(orderPayInfo);   //用集合 存储第一个对象里面 的头布局信息

            // 商品  把 每个订单 里面的每个对象遍历出来  存储到集合
            List<OrdersBean.DataBean.ListBean.ChartListBean> chartList = bean.getChartList();
            Map<String, List<OrderGoodsItem>> orderGoodsMap = new HashMap<String, List<OrderGoodsItem>>();
            for (OrdersBean.DataBean.ListBean.ChartListBean chartListBean : chartList) {
                OrderGoodsItem orderGoodsItem = new OrderGoodsItem();
                orderGoodsItem.setPharmacyId(ordersId);
                orderGoodsItem.setOrdersId(ordersId);
                orderGoodsItem.setBetterPrice(chartListBean.getBetterPrice());
                orderGoodsItem.setDescribe(chartListBean.getDescribe());
                orderGoodsItem.setFormat(chartListBean.getFormat());
                orderGoodsItem.setImage(chartListBean.getImage());
                orderGoodsItem.setName(chartListBean.getName());
                orderGoodsItem.setNumber(chartListBean.getNumber());
                orderGoodsItem.setOriginalPrice(chartListBean.getOriginalPrice());
                dataList.add(orderGoodsItem);  //存储集合
            }

            // 底部
            GoodsOrderInfo goodsOrderInfo = new GoodsOrderInfo();
            goodsOrderInfo.setOrdersId(ordersId);
            goodsOrderInfo.setPharmacyId(pharmacyId);
            goodsOrderInfo.setBid(bean.getBid());
            goodsOrderInfo.setCreateDate(bean.getCreateDate());
            goodsOrderInfo.setFreight(bean.getFreight());
            goodsOrderInfo.setState(bean.getState());
            goodsOrderInfo.setNumbers(chartList.size());
            dataList.add(goodsOrderInfo); //存储集合
        }
        return dataList;
    }
}

 List<Object> mList = new ArrayList<>();
  mList.addAll(OrderDataHelper.getDataAfterHandle(ListBean));// 把 返回的集合存储进来
  

然后设置 Adapter 把获取的集合设置到Adapter

public class OrdersAdapter02 extends RecyclerView.Adapter<RecyclerView.ViewHolder> {


    private Context mContext;
    private BaseViewHolder mHolder1;
    private String mToken;
    private int mLayoutPosition;
    private List<Object> data;
    private int ITEM_HEADER = 1, ITEM_CONTENT = 2, ITEM_FOOTER = 3;

    public OrdersAdapter02(Context context, String token, List<Object> list) {
        mContext = context;
        data = list;
        mToken = token;
    }
    @Override
    public int getItemCount() {
        return data == null ? 0 : data.size();
    }


    @Override
    public int getItemViewType(int position) {  //根据不同对象 返回不同的viewholder
        if (data.get(position) instanceof OrderPayInfo) {
            return ITEM_HEADER;
        } else if (data.get(position) instanceof OrderGoodsItem) {
            return ITEM_CONTENT;
        } else if (data.get(position) instanceof GoodsOrderInfo) {
            return ITEM_FOOTER;
        }
        return ITEM_CONTENT;
    }
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view;
        if (viewType == ITEM_HEADER) {//根据不同对象 加载不同布局 返回不同的viewholder
            view = LayoutInflater.from(context).inflate(R.layout.item_title_hader, parent, false);
            return new MyViewHolderHeader(view);
        } else if (viewType == ITEM_CONTENT) {
            view = LayoutInflater.from(context).inflate(R.layout.simple_list_item_1, parent, false);
            return new MyViewHolderContent(view);
        } else if (viewType == ITEM_FOOTER) {
            view = LayoutInflater.from(context).inflate(R.layout.item_title_foot, parent, false);
            return new MyViewHolderFooter(view);
        }
        return  new MyViewHolderContent(LayoutInflater.from(context).inflate(R.layout.simple_list_item_1, parent, false));
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        if (holder instanceof MyViewHolderHeader) { //根据不同的holder 绑定数据
            OrderPayInfo datas = (OrderPayInfo) data.get(position);
            MyViewHolderHeader holder1 = (MyViewHolderHeader) holder;
            setItemHoderGoodsOrderInfo(datas, holder1);
        } else if (holder instanceof MyViewHolderContent) {
            OrderGoodsItem orderGoodsItem = (OrderGoodsItem) data.get(position);
            MyViewHolderContent holder1 = (MyViewHolderContent) holder;
            setHolderOrderGoodsItem(orderGoodsItem, holder1);
        } else if (holder instanceof MyViewHolderFooter) {
            GoodsOrderInfo orderGoodsItem = (GoodsOrderInfo) data.get(position);
            MyViewHolderFooter holder1 = (MyViewHolderFooter) holder;
            setFooterGoodsOrderInfo(orderGoodsItem, holder1);
        }
        
    }


    /**
     * 设置标题
     *
     * @param datas
     * @param holder1
     */
    private void setItemHoderGoodsOrderInfo(OrderPayInfo datas, MyViewHolderHeader holder1) {
        int pharmacyId = datas.getPharmacyId();
        if (pharmacyId == 0)
            holder1.mBtLeixing.setVisibility(View.VISIBLE);  //自营
        holder1.mTvMall.setText(datas.getPharmacyName());

        switch (datas.getState()) {
            case 0:
                holder1.mTvZhuangtai.setText("待支付");
                break;
            case 1:
                holder1.mTvZhuangtai.setText("待发货");
                break;
            case 2:
                holder1.mTvZhuangtai.setText("待收货");
                break;
            case 3:
                holder1.mTvZhuangtai.setText("待评价");
                break;
            case 4:
                holder1.mTvZhuangtai.setText("退货中");
                break;
            case 5:
                holder1.mTvZhuangtai.setText("退货成功");
                break;
            case 6:
                holder1.mTvZhuangtai.setText("已完成");
                break;
            case 7:
                holder1.mTvZhuangtai.setText("已取消");
                break;
            case 8:
                holder1.mTvZhuangtai.setText("已删除");
                break;
        }

    }

    /**
     * 设置 商品
     *
     * @param orderGoodsItem
     * @param holder1
     */
    private void setHolderOrderGoodsItem(OrderGoodsItem orderGoodsItem, MyViewHolderContent holder1) {
        ImageUtils.showImageOriginal(mContext, Api.address + orderGoodsItem.getImage(), holder1.mImage);
        holder1.mTextName.setText(orderGoodsItem.getName());
        holder1.mTvDescribe.setText(orderGoodsItem.getDescribe());
        holder1.mTvOriginalPrice.setText(orderGoodsItem.getOriginalPrice() + "");
        holder1.mTvOriginalPrice.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);
        holder1.mTvBetterPrice.setText(orderGoodsItem.getBetterPrice() + "");
        holder1.mTvNumber.setText("X" + orderGoodsItem.getNumber());
    }

    private void setFooterGoodsOrderInfo(GoodsOrderInfo item, MyViewHolderFooter holder1) {
        holder1.mBtCancel.setVisibility(View.GONE);
        holder1.mBtDeletes.setVisibility(View.GONE);
        holder1.mBtEvaluate.setVisibility(View.GONE);
        holder1.mBtPayment.setVisibility(View.GONE);
        holder1.mBtExpress.setVisibility(View.GONE);
        holder1.mBtReceipt.setVisibility(View.GONE);
        holder1.mBtRefund.setVisibility(View.GONE);
        holder1.mBtRefundin.setVisibility(View.GONE);
        holder1.mBtView.setVisibility(View.GONE);
        holder1.mTvNumbers.setText("共" + item.getNumbers() + "商品");//商品数量
        holder1.mTvOriginalPrice.setText(item.getBid() + "");//价格
        String createDate = item.getCreateDate();
        holder1.mTvTime.setText(createDate);
        holder1.mTvFreight.setText("运费:" + item.getFreight());
        int state = item.getState();
        switch (state) {
            case 0:
                //holder.bt_deletes.setVisibility(View.VISIBLE); //删除
                holder1.mBtPayment.setVisibility(View.VISIBLE);  //付款
                holder1.mBtCancel.setVisibility(View.VISIBLE);  //取消订单
                break;
            case 1:
                holder1.mBtRefund.setVisibility(View.VISIBLE);  //退款
                // holder.getView(R.id.bt_view).setVisibility(View.VISIBLE);  //查看订单
                break;
            case 2:
                holder1.mBtExpress.setVisibility(View.VISIBLE);  //查看物流
                holder1.mBtReceipt.setVisibility(View.VISIBLE);  //确认收货
                break;
            case 3:
                holder1.mBtDeletes.setVisibility(View.VISIBLE);  //删除
                holder1.mBtEvaluate.setVisibility(View.VISIBLE);  //评价
                break;
            case 4:
                holder1.mBtRefundin.setVisibility(View.VISIBLE); //退货中
                break;
            case 5:
                holder1.mBtDeletes.setVisibility(View.VISIBLE);  //删除
                //holder.bt_evaluate.setVisibility(View.VISIBLE);  //评价
                break;
            case 6:
                holder1.mBtDeletes.setVisibility(View.VISIBLE);  //删除
                //holder.bt_evaluate.setVisibility(View.VISIBLE);  //评价
                break;
            case 7:
                holder1.mBtDeletes.setVisibility(View.VISIBLE);  //删除
                //holder.bt_evaluate.setVisibility(View.VISIBLE);  //评价
                break;
            case 8:
                holder1.mBtDeletes.setVisibility(View.VISIBLE);  //删除
                break;
        }
    }

    public  class MyViewHolderHeader extends RecyclerView.ViewHolder {
        Button mBtLeixing;
        TextView mTvMall;
        TextView mTvZhuangtai;
        LinearLayout mTitleMall;

        public MyViewHolderHeader(View view) {
            super(view);
            mBtLeixing = (Button) view.findViewById(R.id.bt_leixing);
            mTvMall = (TextView) view.findViewById(R.id.tv_mall);
            mTvZhuangtai = (TextView) view.findViewById(R.id.tv_zhuangtai);
            mTitleMall = (LinearLayout) view.findViewById(R.id.title_mall);

        }
    }

    public  class MyViewHolderContent extends RecyclerView.ViewHolder {
        ImageView mImage;
        TextView mTextName;
        TextView mTvDescribe;
        TextView mTvBetterPrice;
        TextView mTvOriginalPrice;
        TextView mTvNumber;
        LinearLayout mItemClickLinear;

        public MyViewHolderContent(View view) {
            super(view);
            mImage= (ImageView) view.findViewById(R.id.image);
            mTextName=(TextView) view.findViewById(R.id.text_name);
            mTvDescribe=(TextView) view.findViewById(R.id.tv_describe);
            mTvBetterPrice=(TextView) view.findViewById(R.id.tv_betterPrice);
            mTvOriginalPrice=(TextView) view.findViewById(R.id.tv_originalPrice);
            mTvNumber=(TextView) view.findViewById(R.id.tv_number);
            mItemClickLinear= (LinearLayout) view.findViewById(R.id.item_click_linear);
        }
    }

   public class MyViewHolderFooter extends RecyclerView.ViewHolder {
        TextView mTvNumbers;
        TextView mTvOriginalPrice;
        TextView mTvFreight;
        TextView mTvTime;
        Button mBtDeletes;
        Button mBtCancel;
        Button mBtEvaluate;
        Button mBtPayment;
        Button mBtExpress;
        Button mBtRefund;
        Button mBtRefundin;
        Button mBtReceipt;
        Button mBtView;

        public MyViewHolderFooter(View view) {
            super(view);
            mTvNumbers=(TextView) view.findViewById(R.id.tv_numbers);
            mTvOriginalPrice=(TextView) view.findViewById(R.id.tv_originalPrice);
            mTvFreight=(TextView) view.findViewById(R.id.tv_freight);
            mTvTime=(TextView) view.findViewById(R.id.tv_time);
            mBtDeletes=(Button) view.findViewById(R.id.bt_deletes);
            mBtCancel=(Button) view.findViewById(R.id.bt_cancel);
            mBtEvaluate=(Button) view.findViewById(R.id.bt_evaluate);
            mBtPayment=(Button) view.findViewById(R.id.bt_payment);
            mBtExpress=(Button) view.findViewById(R.id.bt_express);
            mBtRefund=(Button) view.findViewById(R.id.bt_refund);
            mBtRefundin=(Button) view.findViewById(R.id.bt_refundin);
            mBtReceipt=(Button) view.findViewById(R.id.bt_receipt);
            mBtView=(Button) view.findViewById(R.id.bt_view);
        }
    }

}

demo代码中 点击事件还没有实现 需要用的时候 设置接口回调就好了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,589评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,615评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,933评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,976评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,999评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,775评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,474评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,359评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,854评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,007评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,146评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,826评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,484评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,029评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,153评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,420评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,107评论 2 356

推荐阅读更多精彩内容