一般电商项目会涉及到的订单管理模块,类似淘宝样式的订单

主要是讲一下订单页面的实现。当然实现的方法有很多,我知道的有两种方法:一种是采用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;}@Overridepublic int getLayout() {return R.layout.item_order_top;}@Overridepublic boolean isClickable() {return true;}public Order order() {return order;}@Overridepublic 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()创建DisplayImageOptionsoptions = new DisplayImageOptions.Builder().showImageOnLoading(R.drawable.publicloading).showImageForEmptyUri(R.drawable.publicloading).showImageOnFail(R.drawable.publicloading).cacheInMemory(true).build();}@Overridepublic int getLayout() {return R.layout.listitem_goods;}@Overridepublic boolean isClickable() {return true;}public Order_goods order_goods() {return order_goods;}@Overridepublic 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() {@Overridepublic 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;}@Overridepublic int getLayout() {return R.layout.item_list_list;}@Overridepublic boolean isClickable() {return true;}public Order order() {return order;}@Overridepublic 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() {@Overridepublic 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() {@Overridepublic 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>();}}@Overridepublic int getCount() {return orderContents.size();}@Overridepublic Object getItem(int position) {return orderContents.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic boolean isEnabled(int position) {// TODO Auto-generated method stubreturn orderContents.get(position).isClickable();}@Overridepublic 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 stubthis.orderContents.addAll(orderContents);this.notifyDataSetChanged();}public void clearListView() {// TODO Auto-generated method stubthis.orderContents.clear();}}

最后,使用此方法需要和接口沟通好数据返回的格式;

Android仿淘宝订单页面实现相关推荐

  1. Android仿淘宝详情页面viewPager滑动到最后一张图片跳转的功能

    需要做一个仿淘宝客户端ViewPager滑动到最后一页,再拖动的时候跳到详情的功能,刚开始我也迷糊了,通过查阅相关资料发现有好多种实现方法,下面小编给大家分享实例代码,感兴趣的朋友一起看看吧 需要做一 ...

  2. Android仿淘宝、京东Banner滑动查看图文详情

    文章目录 写在前面 效果图 原理分析 核心代码 源码地址 写在前面 本文基于 ViewPager2 实现的 Banner 效果,进而实现了仿淘宝.京东Banner滑动至最后一页时继续滑动来查看图文详情 ...

  3. Android仿淘宝首页UI(附代源代码及示例图片)

    Android仿淘宝首页UI(附代源代码及示例图片) 可以收获 运行出来的效果 部分代码 源代码 可以收获 更改Layout中的文字和drawble中的图片即可生成适应于不同情景的APP,帮助开发者完 ...

  4. Android仿淘宝淘口令实现

    先复制信息到剪切板,然后再打开淘宝,.既然是复制,肯定是复制到系统的剪切板了,我们可以通过下边的代码来把口令给复制到系统的剪切板里 1 2 3 4 5 6 //获取剪贴板管理器: ClipboardM ...

  5. Android仿淘宝tab返回

    一.概述                 淘宝相信大家都在用过,不过不知道各位有没有仔细观察过淘宝的tab界面,尤其是返回的时候的逻辑.最近闲来无事,猛然发现淘宝的tab界面还真的挺好玩,废话不多说, ...

  6. Android 仿淘宝商品详情页下拉足迹Demo

    DropDownMultiPager 仿淘宝等商品详情页下拉足迹效果SimpleDemo 可colne之后看MainActivity的调用,方便二次开发 依赖 compile 'com.nineold ...

  7. Android 仿淘宝京东等我的订单界面及任意列表拓展

    概述 目前像淘宝及展示列表等都有多个item展示的需求,可能大多数如果没做过,第一眼就是ListView去嵌套ListView,虽然这样是可以完成,但是这样做会导致手机过度绘制,为什么呢?因为当一个I ...

  8. Android仿淘宝页面布局

    说明 该项目就是简单地仿造淘宝的一些页面,没有功能!! icon是在网上找的尽量一样的,颜色是自己用PS吸出来的,尺寸是用PS量出来的. 运行环境 小米6 (分辨率1920*1080,尺寸5.15) ...

  9. 仿淘宝订单管理界面设计

    由于最近项目需求,需要用到购物类型界面设计,于是仿了淘宝做了一下. 还没学会做gif图,图片先凑合看吧.这是主界面.布局代码如下. 布局很简单,就不多说明,然后就是mainactivity的代码了 p ...

  10. Android仿淘宝京东商品规格参数颜色筛选

    Android 选择商品属性sku 最近项目中使用SKU属性查询,类似淘宝京东商品的选择,在网上查询了弄了几个源码看看,发现还是实现不了多属性选择问题,再原基础上改动相当费事,所以想干脆自己处理这个问 ...

最新文章

  1. HBase 常用Shell命令
  2. 以为Swing没人用了,原来群友们都是如此优秀!
  3. Linux下的vim编辑器与gcc编译器及静动态库的制作
  4. 生成有时间限制的二维码_微信公众号渠道二维码怎么制作?监测渠道效果的利器来了...
  5. 计算机统考测试,计算机统考专业测试题.doc
  6. windows系统开机自动扫描硬盘的原因及解决方法
  7. 使用sqlmap进行SQL注入检测
  8. [转]SAP模块一句话入门
  9. 微信如何群删好友 微信群删好友的方法教程
  10. java电影定票系统_Java实现电影院订票系统代码
  11. 手机里的照片删了怎么恢复
  12. 芯准TSN系统的测试与验证(1)——测试环境配置
  13. MySQL基础学习笔记(带目录)
  14. 计算机为什么不读500g硬盘,为什么我的500g硬盘的实际容量只有46 5. 1G
  15. face++ API接口调用
  16. 倒三角形(triangle)
  17. seurat -- 细胞注释部分
  18. iconfont 中图标以及字体库在页面中的引用
  19. CAS单点登录(八)——多属性返回
  20. 【插件】浏览器广告拦截插件| 浏览器搜索广告横飞怎么办

热门文章

  1. Android模拟器知识以及改造
  2. 树莓派 小型服务器的搭建
  3. 河北易县八佛洼辽三彩罗汉造像
  4. Ubuntu 20.04.2 LTS 系统美化 (UOS主题)
  5. [思考进阶]02 如何进行认知升级?
  6. python读取定位_如何使用python定位和读取Data Matrix代码
  7. 基于U3D的VR开发教程:(1)基础环境配置
  8. 丁火生于未月命理分析_丁火生于未月
  9. 1.1 迷茫的大学——《逆袭大学》连载
  10. 携程景区爬取 + 保存Excel