亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android仿淘寶訂單頁面效果

2019-10-21 21:33:14
字體:
來源:轉載
供稿:網友

一般電商項目會涉及到的訂單管理模塊,類似淘寶樣式的訂單

Android,淘寶,訂單

Android,淘寶,訂單

主要是講一下訂單頁面的實現。當然實現的方法有很多,我知道的有兩種方法:一種是采用listview嵌套listview的方式,這種方式需要重寫listview中onMearsure方法;還有一種是采用接口回調的方式,這種方式主要對后臺返回的數據有依賴; 

今天主要說下第二種方法: 

實現的思想:首先Tab下面的布局還是用一個listview實現,然后將listview中的item分為上中下三部分內容; 

創建三個xml文件,分別實現三個布局;第一部分為店鋪名稱那一欄,第二部分為商品信息那一欄,第三部分為訂單狀態那一欄; 

然后創建一個回調接口 

代碼如下 

public interface OrderContent { public int getLayout(); public boolean isClickable(); public View getView(Context context, View convertView, LayoutInflater inflater); } 

利用接口回調分別實現三個布局

第一部分

public class ItemOrderTop implements OrderContent {  private Order order;  private OnceSendView2 shopImageView;  private List<Order_goods> list;  private ACache aCache;  public ItemOrderTop(Order order, List<Order_goods> list) {    this.order = order;    this.list = list;  }  @Override  public int getLayout() {    return R.layout.item_order_top;  }  @Override  public boolean isClickable() {    return true;  }  public Order order() {    return order;  }  @Override  public View getView(final Context context, View convertView, LayoutInflater inflater) {    aCache = ACache.get(context);    inflater = LayoutInflater.from(context);    convertView = inflater.inflate(getLayout(), null);    final GTextView orderId = (GTextView) convertView.findViewById(R.id.tv_order_num1);    GTextView orderstatus = (GTextView) convertView.findViewById(R.id.tv_order_state1);    orderId.setText("訂單號碼:" + order.getOrder_sn());    switch (order.getStatus().toString()) {      case "20":        orderstatus.setText("待發貨");        break;      case "30":        orderstatus.setText("已發貨");        break;      case "40":        orderstatus.setText("已收貨待評價");        break;      default:        break;    }    return convertView;  }}

中間部分

public class OrderIMiddle implements OrderContent {  private Order_goods order_goods;  private ImageLoader imageLoader;  private DisplayImageOptions options;  List<Order_goods> order_goodsList;  private String status;  public OrderIMiddle(Order_goods order_goods, String status) {    this.order_goods = order_goods;    order_goodsList = new ArrayList<Order_goods>();    order_goodsList.add(order_goods);    this.status = status;    imageLoader = ImageLoader.getInstance();    // 使用DisplayImageOptions.Builder()創建DisplayImageOptions    options = new DisplayImageOptions.Builder()        .showImageOnLoading(R.drawable.publicloading)        .showImageForEmptyUri(R.drawable.publicloading)        .showImageOnFail(R.drawable.publicloading)        .cacheInMemory(true)        .build();  }  @Override  public int getLayout() {    return R.layout.listitem_goods;  }  @Override  public boolean isClickable() {    return true;  }  public Order_goods order_goods() {    return order_goods;  }  @Override  public View getView(final Context context, View convertView, LayoutInflater inflater) {    inflater = LayoutInflater.from(context);    convertView = inflater.inflate(getLayout(), null);    GImageView mImage = (GImageView) convertView.findViewById(R.id.iv_goods_image1);    GTextView goods_info = (GTextView) convertView.findViewById(R.id.tv_goods_info1);    GTextView goods_attribute = (GTextView) convertView.findViewById(R.id.tv_goods_attribute1);    GTextView goods_num = (GTextView) convertView.findViewById(R.id.tv_goods_num1);    GTextView goods_price = (GTextView) convertView.findViewById(R.id.tv_goods_price1);    goods_info.setText(order_goods.getGoods_name());    goods_attribute.setText(order_goods.getSpecification());    goods_num.setText("x" + order_goods.getQuantity());    goods_price.setText("¥:" + order_goods.getPrice());    Log.i("TAG", "order_goods.getOrder_id()=" + order_goods.getOrder_id());    imageLoader.init(FileUtils.getCache(context));    imageLoader.displayImage(order_goods.getGoods_image(), mImage, options);    convertView.setOnClickListener(new View.OnClickListener() {      @Override      public void onClick(View v) {        switch (status) {          case "40":            Intent intent = new Intent(context, Message_Logistics.class);            intent.putExtra("order_id", order_goods.getOrder_id());            context.startActivity(intent);            break;          case "30":            Intent intent2 = new Intent(context, Message_Logistics.class);            intent2.putExtra("order_id", order_goods.getOrder_id());            context.startActivity(intent2);            break;          case "20":            Intent intent3 = new Intent(context, Message_Delivery.class);            intent3.putExtra("order_id", order_goods.getOrder_id());            context.startActivity(intent3);            break;          default:            break;        }      }    });    return convertView;  }}

底部:

public class OrderBottom implements OrderContent {  private Order order;  private OnceSendView2 shopImageView;  private List<Order_goods> list;  private ACache aCache;  public OrderBottom(Order order, List<Order_goods> list) {    this.order = order;    this.list = list;  }  @Override  public int getLayout() {    return R.layout.item_list_list;  }  @Override  public boolean isClickable() {    return true;  }  public Order order() {    return order;  }  @Override  public View getView(final Context context, View convertView, LayoutInflater inflater) {    aCache = ACache.get(context);    inflater = LayoutInflater.from(context);    convertView = inflater.inflate(getLayout(), null);    GTextView orderTotal = (GTextView) convertView.findViewById(R.id.tv_order_amount1);    GTextView tv_order_datetime = (GTextView) convertView.findViewById(R.id.tv_order_datetime);    final GButton oncesend = (GButton) convertView.findViewById(R.id.btn_send1);    GTextView yunfei_text = (GTextView) convertView.findViewById(R.id.yunfei_text);    yunfei_text.setText("(含運費: ¥ "+order.getShipping_fee()+")");    orderTotal.setText(order.getOrder_amount());    tv_order_datetime.setText(Data_Time.getDateToString(order.getAdd_time()));    final View finalConvertView = convertView;    if (order.getStatus().equals("20")) {      oncesend.setText("立即發貨");      oncesend.setOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View v) {          Intent otherintent = new Intent(context, Message_Delivery.class);          otherintent.putExtra("order_id", order.getOrder_id());          otherintent.putExtra("token", aCache.getAsString("token"));          context.startActivity(otherintent);        }      });    } else if (order.getStatus().equals("30")){      oncesend.setBackgroundResource(R.color.highlight_color);      oncesend.setText("查看物流");      oncesend.setOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View v) {          Intent intent = new Intent(context, Message_Logistics.class);          intent.putExtra("order_id", order.getOrder_id());          context.startActivity(intent);        }      });    }    else    {      oncesend.setVisibility(View.GONE);    }    return convertView;  }}

接收接口返回的數據,然后利用for循環將數據循環讀入到上中下三個布局中

//解析后臺返回的數據    Type tp = new TypeToken<OrderItems>() {    }.getType();    OrderItems goodsItem = (OrderItems) ParseUtils.Gson2Object(s, tp);    List<OrderItems> orderItems = new ArrayList<OrderItems>();    orderItems.add(goodsItem);    List<OrderContent> orderContents;    List<Order> orderList = new ArrayList<Order>();    if (goodsItem.getData() != null) {      orderList = goodsItem.getData().getOrders();      orderContents = new ArrayList<OrderContent>();      List<Order_goods> orderGoodses = new ArrayList<Order_goods>();      int totalPages = goodsItem.getData().getPage().getPage_count();      //外部第一個循環,將數據循環讀取后存到訂單頂部      for (int k = 0; k < orderList.size(); k++) {        orderGoodses = orderList.get(k).getOrder_goods();        Order ordertop = new Order();        ordertop.setOrder_sn(orderList.get(k).getOrder_sn());        ordertop.setStatus(orderList.get(k).getStatus());        ordertop.setEvaluation_status(orderList.get(k).getEvaluation_status());        ItemOrderTop itemOrderTop = new ItemOrderTop(ordertop, orderGoodses);        orderContents.add(itemOrderTop);        if (orderGoodses == null) {          BaseUtil.showToast(context, "沒有訂單");        } else {          //中間for循環,將數據循環讀取后存到訂單中間部分          for (int j = 0; j < orderGoodses.size(); j++) {            Order_goods goods = new Order_goods();            goods.setPrice(orderGoodses.get(j).getPrice());            goods.setGoods_name(orderGoodses.get(j).getGoods_name());            goods.setQuantity(orderGoodses.get(j).getQuantity());            goods.setGoods_image(orderGoodses.get(j).getGoods_image());            goods.setSpecification(orderGoodses.get(j).getSpecification());            goods.setOrder_id(orderGoodses.get(j).getOrder_id());            OrderIMiddle orderIMiddle = new OrderIMiddle(goods,   orderList.get(k).getStatus());            orderContents.add(orderIMiddle);            Log.i("myLog", "orderContents =" + orderContents);          }        }        //外部第二個循環,將數據循環讀取后存到訂單底部        Order order = new Order();        order.setOrder_sn(orderList.get(k).getOrder_sn());        order.setOrder_id(orderList.get(k).getOrder_id());        order.setStatus(orderList.get(k).getStatus());        order.setAdd_time(orderList.get(k).getAdd_time());        order.setOrder_amount(orderList.get(k).getOrder_amount());        order.setShipping_fee(orderList.get(k).getShipping_fee());        OrderBottom orderBottom = new OrderBottom(order, orderGoodses);        orderContents.add(orderBottom);      }      mUpdateListview(orderContents, mOrderAdapter, mListView, page, totalPages);    } else {      BaseUtil.showToast(context, "沒有訂單");    }}

然后利用setAdapter方法將數據傳到Adapter中。 

以下是Adapter的實現方法

public class OrderParentListAdapter extends BaseAdapter {  private Context context;  private List<OrderContent> orderContents;  private LayoutInflater mIflater;  public OrderParentListAdapter(Context context, List<OrderContent> orderContents) {    this.context = context;    if(orderContents!=null)    {      this.orderContents = orderContents;    }    else    {      this.orderContents =new ArrayList<OrderContent>();    }  }  @Override  public int getCount() {    return orderContents.size();  }  @Override  public Object getItem(int position) {    return orderContents.get(position);  }  @Override  public long getItemId(int position) {    return position;  }  @Override  public boolean isEnabled(int position) {    // TODO Auto-generated method stub    return orderContents.get(position).isClickable();  }  @Override  public View getView(int position, View convertView, ViewGroup parent) {    return orderContents.get(position).getView(context,convertView,mIflater);  }  public void upateList(List<OrderContent> orderContents) {    // TODO Auto-generated method stub    this.orderContents.addAll(orderContents);    this.notifyDataSetChanged();  }  public void clearListView() {    // TODO Auto-generated method stub    this.orderContents.clear();  }}

最后,使用此方法需要和接口溝通好數據返回的格式;

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩亚洲精品一区二区三区| 久久精品电影一区二区| 成人精品一区二区三区电影免费| 欧美成人精品三级在线观看| 久久高清视频免费| 日韩精品丝袜在线| 成人性生交大片免费看视频直播| 亚洲免费av片| 高跟丝袜一区二区三区| 国产亚洲欧洲高清一区| 色综合久久久888| 日韩在线观看av| 国产精品夫妻激情| 久久精品国产久精国产思思| 538国产精品视频一区二区| 亚洲美女中文字幕| 欧美视频在线观看免费| 不卡av在线网站| 欧美丰满老妇厨房牲生活| 国产欧美最新羞羞视频在线观看| 韩剧1988免费观看全集| 97视频在线观看亚洲| 日韩有码视频在线| 精品久久久在线观看| 亚洲开心激情网| 在线播放日韩精品| 色婷婷av一区二区三区在线观看| 国产97在线视频| 青青久久aⅴ北条麻妃| 黑人精品xxx一区| 欧美激情免费观看| 色综合天天狠天天透天天伊人| 日韩av免费在线| 一本久久综合亚洲鲁鲁| 欧美成人午夜影院| 亚洲午夜未满十八勿入免费观看全集| 欧美日韩国产999| 日韩视频亚洲视频| 成人久久一区二区| 亚洲精品视频二区| 欧美一区二区视频97| 国产精品一区二区久久久久| 亚洲成人精品久久| 亚洲深夜福利网站| 久久人人爽人人爽人人片av高清| 国产精品欧美日韩| 一个人www欧美| 欧美孕妇毛茸茸xxxx| xvideos成人免费中文版| 亚洲高清久久久久久| 国产精品视频久久| www.xxxx欧美| 在线成人中文字幕| 国产经典一区二区| zzjj国产精品一区二区| 夜夜狂射影院欧美极品| 性欧美长视频免费观看不卡| 在线观看国产精品91| 98精品国产自产在线观看| 亚洲欧美中文日韩在线v日本| 久久99视频精品| 欧美中文在线免费| 最近2019年日本中文免费字幕| 午夜精品在线观看| 国产精品爽爽ⅴa在线观看| 粗暴蹂躏中文一区二区三区| 日韩美女在线播放| 91精品国产综合久久香蕉| 97视频在线观看成人| 国产成人精品在线播放| 成人两性免费视频| 亚洲综合色激情五月| 国产精品久久久久久网站| 粗暴蹂躏中文一区二区三区| 色在人av网站天堂精品| 国产精品尤物福利片在线观看| 日韩一区二区精品视频| 最新国产精品亚洲| 国产精品第二页| 精品久久久久久久久久ntr影视| 亚洲国产福利在线| 91免费看视频.| 91在线视频免费| 欧美怡春院一区二区三区| 欧美怡红院视频一区二区三区| 欧美中文字幕在线视频| 亚洲国产欧美自拍| 日韩视频免费中文字幕| 91av在线看| 国产丝袜一区二区三区| 国内精久久久久久久久久人| 久久综合久久八八| 日韩精品在线私人| 欧美怡红院视频一区二区三区| 国产美女精品视频免费观看| 国产亚洲日本欧美韩国| 国产精品综合不卡av| 91久热免费在线视频| 欧美综合一区第一页| 久久久亚洲欧洲日产国码aⅴ| 国产一区二区三区在线免费观看| 亚洲免费一在线| 18性欧美xxxⅹ性满足| 在线视频国产日韩| 日韩欧美极品在线观看| 久久99久久99精品免观看粉嫩| 亚洲综合精品伊人久久| 欧美精品激情blacked18| 久久精彩免费视频| 久久久www成人免费精品张筱雨| 亚洲r级在线观看| 欧美综合第一页| 国产91成人在在线播放| 欧美国产日韩一区二区| 日韩中文视频免费在线观看| 国产免费一区二区三区在线能观看| 中文字幕亚洲欧美在线| 国产99久久精品一区二区| 亚洲已满18点击进入在线看片| 日韩国产精品视频| 欧美激情视频在线免费观看 欧美视频免费一| 精品日本美女福利在线观看| 日韩av电影国产| 久久久国产91| 亚洲免费精彩视频| 精品女同一区二区三区在线播放| 国产欧美日韩中文| 欧美激情精品久久久久久变态| 日韩欧中文字幕| 国产欧美日韩中文字幕在线| 亚洲成人1234| 精品国产欧美成人夜夜嗨| 欧美成人在线免费视频| 日韩av男人的天堂| 日韩av电影免费观看高清| 国外成人免费在线播放| 久久国产精品网站| 欧美电影院免费观看| 精品久久久久久久久国产字幕| 国产精品偷伦视频免费观看国产| 精品亚洲精品福利线在观看| 欧洲成人在线观看| 成人免费网视频| 亚洲人成电影网站色…| 国内精久久久久久久久久人| 日韩av电影中文字幕| 国产精品黄视频| 国产精品成人免费视频| 久久久久久久久久av| 色爱精品视频一区| 欧美大片大片在线播放| 萌白酱国产一区二区| 午夜精品久久久久久久99黑人| 成人美女av在线直播| 97在线精品视频| 亚洲天堂影视av| 欧美又大粗又爽又黄大片视频| 精品久久久久久中文字幕大豆网| 色综合久久88| 69精品小视频| 国外视频精品毛片| 精品国内产的精品视频在线观看| 尤物九九久久国产精品的特点| 亚洲精品国产精品国产自|