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;}@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仿淘宝订单页面实现相关推荐
- Android仿淘宝详情页面viewPager滑动到最后一张图片跳转的功能
需要做一个仿淘宝客户端ViewPager滑动到最后一页,再拖动的时候跳到详情的功能,刚开始我也迷糊了,通过查阅相关资料发现有好多种实现方法,下面小编给大家分享实例代码,感兴趣的朋友一起看看吧 需要做一 ...
- Android仿淘宝、京东Banner滑动查看图文详情
文章目录 写在前面 效果图 原理分析 核心代码 源码地址 写在前面 本文基于 ViewPager2 实现的 Banner 效果,进而实现了仿淘宝.京东Banner滑动至最后一页时继续滑动来查看图文详情 ...
- Android仿淘宝首页UI(附代源代码及示例图片)
Android仿淘宝首页UI(附代源代码及示例图片) 可以收获 运行出来的效果 部分代码 源代码 可以收获 更改Layout中的文字和drawble中的图片即可生成适应于不同情景的APP,帮助开发者完 ...
- Android仿淘宝淘口令实现
先复制信息到剪切板,然后再打开淘宝,.既然是复制,肯定是复制到系统的剪切板了,我们可以通过下边的代码来把口令给复制到系统的剪切板里 1 2 3 4 5 6 //获取剪贴板管理器: ClipboardM ...
- Android仿淘宝tab返回
一.概述 淘宝相信大家都在用过,不过不知道各位有没有仔细观察过淘宝的tab界面,尤其是返回的时候的逻辑.最近闲来无事,猛然发现淘宝的tab界面还真的挺好玩,废话不多说, ...
- Android 仿淘宝商品详情页下拉足迹Demo
DropDownMultiPager 仿淘宝等商品详情页下拉足迹效果SimpleDemo 可colne之后看MainActivity的调用,方便二次开发 依赖 compile 'com.nineold ...
- Android 仿淘宝京东等我的订单界面及任意列表拓展
概述 目前像淘宝及展示列表等都有多个item展示的需求,可能大多数如果没做过,第一眼就是ListView去嵌套ListView,虽然这样是可以完成,但是这样做会导致手机过度绘制,为什么呢?因为当一个I ...
- Android仿淘宝页面布局
说明 该项目就是简单地仿造淘宝的一些页面,没有功能!! icon是在网上找的尽量一样的,颜色是自己用PS吸出来的,尺寸是用PS量出来的. 运行环境 小米6 (分辨率1920*1080,尺寸5.15) ...
- 仿淘宝订单管理界面设计
由于最近项目需求,需要用到购物类型界面设计,于是仿了淘宝做了一下. 还没学会做gif图,图片先凑合看吧.这是主界面.布局代码如下. 布局很简单,就不多说明,然后就是mainactivity的代码了 p ...
- Android仿淘宝京东商品规格参数颜色筛选
Android 选择商品属性sku 最近项目中使用SKU属性查询,类似淘宝京东商品的选择,在网上查询了弄了几个源码看看,发现还是实现不了多属性选择问题,再原基础上改动相当费事,所以想干脆自己处理这个问 ...
最新文章
- HBase 常用Shell命令
- 以为Swing没人用了,原来群友们都是如此优秀!
- Linux下的vim编辑器与gcc编译器及静动态库的制作
- 生成有时间限制的二维码_微信公众号渠道二维码怎么制作?监测渠道效果的利器来了...
- 计算机统考测试,计算机统考专业测试题.doc
- windows系统开机自动扫描硬盘的原因及解决方法
- 使用sqlmap进行SQL注入检测
- [转]SAP模块一句话入门
- 微信如何群删好友 微信群删好友的方法教程
- java电影定票系统_Java实现电影院订票系统代码
- 手机里的照片删了怎么恢复
- 芯准TSN系统的测试与验证(1)——测试环境配置
- MySQL基础学习笔记(带目录)
- 计算机为什么不读500g硬盘,为什么我的500g硬盘的实际容量只有46 5. 1G
- face++ API接口调用
- 倒三角形(triangle)
- seurat -- 细胞注释部分
- iconfont 中图标以及字体库在页面中的引用
- CAS单点登录(八)——多属性返回
- 【插件】浏览器广告拦截插件| 浏览器搜索广告横飞怎么办