1. 这段时间做的三个app会经常遇到自定义listview进行动态的添加商品然后进行结算,在加入到购物车进行结算,结算的方式就是老三样。首先实现的思路就是在主视图(比如fragment、activity或者是fragmentactivity)中有个被scrollview嵌套的linearlayout去addview自定义的listview,那自定义的listview是继承于linearlayout,创建完之后自身在加一下,创建view就是这样,然后通过遍历集合数据进行动态的添加到主视图的linearlayout中去。
  2. 代码的实现如下所示:
//这是自己定义的listview就是动态添加数据的viewpublic class OrderListview extends LinearLayout {private Context context;private FinalBitmap afinal;private ListView listView;private TextView tv_time_date;private TextView tv_time_hours;private OrderItemBean bean;private MyAdapter adapter;private TextView tv_totalprice;private TextView tv_gotogive;public OrderListview(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);// TODO Auto-generated constructor stubthis.context = context;init();}public OrderListview(Context context, AttributeSet attrs) {super(context, attrs);// TODO Auto-generated constructor stubthis.context = context;init();}public OrderListview(Context context) {super(context);// TODO Auto-generated constructor stubthis.context = context;init();}private void init() {// TODO Auto-generated method stubafinal = FinalBitmap.create(context);LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);View view = inflater.inflate(R.layout.orderlistview, null);listView=(ListView) view.findViewById(R.id.ll_order_list);//头部tv_time_date = (TextView) view.findViewById(R.id.tv_time_date);tv_time_hours = (TextView) view.findViewById(R.id.tv_time_hours);//底部tv_totalprice = (TextView) view.findViewById(R.id.tv_totalprice);tv_gotogive = (TextView) view.findViewById(R.id.tv_gotogive);tv_gotogive.setOnClickListener(new OnClickListener() {public void onClick(View v) {// TODO Auto-generated method stubSystem.out.println("void");}});this.addView(view, new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));adapter = new MyAdapter();}public void setData(OrderItemBean bean){this.bean=bean;listView.setAdapter(adapter);tv_totalprice.setText("¥" +bean.getTotalPrice());this.setListViewHeightBasedOnChildren(listView);}class MyAdapter extends BaseAdapter{public int getCount() {// TODO Auto-generated method stubreturn bean.getList().size();}public Object getItem(int position) {// TODO Auto-generated method stubreturn bean.getList().get(position);}public long getItemId(int position) {// TODO Auto-generated method stubreturn position;}public View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubViewHolder holder;if(convertView==null){holder=new ViewHolder();convertView=View.inflate(getContext(), R.layout.item_orderdetail, null);holder.iv_icon=(ImageView) convertView.findViewById(R.id.orderdetail_icon);holder.tv_name=(TextView) convertView.findViewById(R.id.orderdetail_name);holder.tv_category=(TextView) convertView.findViewById(R.id.orderdetail_category);holder.tv_guige=(TextView) convertView.findViewById(R.id.orderdetail_guige);holder.tv_price=(TextView) convertView.findViewById(R.id.orderdetail_price);holder.tv_count=(TextView) convertView.findViewById(R.id.orderdetail_shuliang);convertView.setTag(holder);}else{holder=(ViewHolder) convertView.getTag();}ArrayList<Goods> goodslist = bean.getList();if( goodslist.get(position).getImageUrl()!=null){afinal.display(holder.iv_icon, goodslist.get(position).getImageUrl());}else{holder.iv_icon.setBackgroundResource(R.drawable.ic_launcher);}holder.tv_name.setText(goodslist.get(position).getProductTitle());holder.tv_category.setText(goodslist.get(position).getProductCategory());holder.tv_guige.setText(goodslist.get(position).getProductSpecification()+"L");//String price = CommonUtil.changeF2Y(goodslist.get(position).getProductPrice());holder.tv_price.setText("¥" + goodslist.get(position).getProductPrice());holder.tv_count.setText("×" +goodslist.get(position).getProductCount());return convertView;}}class ViewHolder{ImageView iv_icon;TextView tv_name;TextView tv_category;TextView tv_guige;TextView tv_price;TextView tv_count;}public static void setListViewHeightBasedOnChildren(ListView listView) {// 获取ListView对应的AdapterListAdapter listAdapter = listView.getAdapter();if (listAdapter == null) {// pre-conditionreturn;}int totalHeight = 0;for (int i = 0, len = listAdapter.getCount(); i < len; i++) { // listAdapter.getCount()返回数据项的数目View listItem = listAdapter.getView(i, null, listView);listItem.measure(0, 0); // 计算子项View 的宽高totalHeight += listItem.getMeasuredHeight(); // 统计所有子项的总高度}LinearLayout.LayoutParams params = (LayoutParams) listView.getLayoutParams();params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));// listView.getDividerHeight()获取子项间分隔符占用的高度// params.height最后得到整个ListView完整显示需要的高度listView.setLayoutParams(params);}
}
//就是activity涉及到的主要的逻辑就是往listview中添加数据
for (OrderItemBean order : orders) {OrderListview orderListview = new OrderListview(this);orderListview.setData(order);//act_ungive_content.addView(orderListview);LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);params.setMargins(0, 15, 0, 0);ll_allorder.addView(orderListview, params);}

3、这是实现的自定义的listview的实现。这个用法可以在很多app都会用到。大家赶紧学习一下吧。

实现淘宝订单(比如订单生成、未支付的订单等等)自定义view的实现相关推荐

  1. 淘宝联盟实现第三方用户关联返佣订单的解决方案

    淘宝联盟实现第三方用户关联返佣订单的解决方案 利用淘宝联盟思域用户渠道id与第三方用户做关联实现绑定,当第三方用户用关联的淘宝账号购买自己渠道的淘宝推广商品后,淘宝联盟后台获取的返佣订单就会标识对应的 ...

  2. 淘宝/天猫seller_order_list-获取卖出的商品订单列表接口接入解决方案

    一.淘宝/天猫seller_order_list-获取卖出的商品订单列表接口API 返回值说明 点击注册获取key和secret测试账号 提取淘宝天猫店铺卖家账号买到的订单编号,订单金额,订单详情等, ...

  3. 如何实现生成订单30分钟内未支付则自动取消?

    如何实现生成订单30分钟内未支付则自动取消? 数据库轮询 JDK的延迟队列 Quartz 时间轮算法 使用消息队列 数据库轮询 不是很推荐的一种方式,需要定时扫描数据库,借助定时任务工具,如果是多服务 ...

  4. Java秒杀系统实战系列~RabbitMQ死信队列处理超时未支付的订单(转)

    转自: https://juejin.cn/post/6844903903130042376 文末有源代码,非常棒 摘要: 本篇博文是"Java秒杀系统实战系列文章"的第十篇,本篇 ...

  5. 淘宝Push智能文案生成

    本文主要介绍了2021年笔者在智能文案生成项目所做的工作. 业务背景 Push是淘宝重要促活手段之一,运营同学通过投放各类营销.产品Push以达到唤端.促活目的.Push素材通常由人群.商品或者活动. ...

  6. 模拟商城的购物过程Java_编写Java程序,模拟网上商城购物,当用户选好物品提交订单时,每笔订单会自动生成一个唯一的订单编号。...

    需求说明: 模拟网上商城购物,当用户选好物品提交订单时,每笔订单会自动生成一个唯一的订单编号.而部分电子商务网站在数据高峰期时,一毫秒可能需要处理近千笔的订单 现在简单模拟 5 个订单同时提交,生成唯 ...

  7. Java秒杀系统实战系列~定时任务补充处理超时未支付的订单

    摘要: 本篇博文是"Java秒杀系统实战系列文章"的第十一篇,本篇博文我们将借助定时任务调度组件来辅助"失效超时未支付的订单记录"的处理,用以解决上篇博文中采用 ...

  8. 根据淘宝商品 num_iid 批量生成淘宝客链接的 PHP 函数

    根据淘宝商品 num_iid 批量生成淘宝客(什么是淘宝客?)链接的 PHP 文件内容如下. 淘宝 API 有调用次数限制,一次 API 调用,可以最大返回40个商品的淘宝客链接,因此,在本函数内,如 ...

  9. 王兴:淘宝为什么还不支持微信支付?

    来源:刘润   作者:刘润 使用美团点外卖的朋友都知道,支付的时候,美团月付和银行卡支付排在最前面,微信和Apple Pay也都还在. 但就是阿里的支付宝不见了. 大家纷纷吐槽:"美团,你有 ...

  10. 电商导购CPS,淘宝联盟如何跟单实现用户和订单绑定

    前言 大家好,我是小悟 做过自媒体的小伙伴都知道,不管是发图文还是发短视频,直播也好,可以带货.在你的内容里面挂上商品,你自己都不需要囤货,如果用户通过这个商品下单成交了,自媒体平台就会给你佣金. 问 ...

最新文章

  1. Django 执行 makemigrations 显示 No changes detected in app
  2. Spring Session源码
  3. C语言指针与强制类型转换
  4. android系统应用功能,Android系统应用(12)
  5. 关于处理小数点位数的几个oracle函数
  6. (三)SpringBoot之配置文件详解:Properties和YAML
  7. 用imspost制作catia后处理_这些有趣又精致的模型,都是用3D打印机打印出来的
  8. linux ip不设置网关,linux下ip与网关不在同一段配置
  9. 南邮CTF--bypass again
  10. 洛谷——P1144 最短路计数
  11. opencv源码解析之(5):CommandLineParser类的简单理解
  12. POJ 3168 Barn Expansion (几何+排序)
  13. LINUX 编译gluegen/jogl
  14. 微信小程序常用UI组件库
  15. 银行卡四要素API 方便好用
  16. 微服务入门到入土(08)-消息队列RabbitMQ
  17. 多参数气体监测系统(上)
  18. MaaS在绽放,为人们提供出行自由:过渡到新的范式
  19. 用Java实现成绩等级划分
  20. C++ 上溢和下溢(overflow underflow)

热门文章

  1. ORACLE 11G 闪回数据归档
  2. Java Stream流式编程
  3. eMMC硬件设计及驱动配置注意项
  4. 住哪儿项目后台管理系统
  5. 小白初学Python(1) - 输入和输出
  6. 如何选择信安系统,IDC/ISP/CDN信安设备,信安系统评测,备案管理系统
  7. 超市会员管理系统(maven,mybais,idea,课工场)
  8. Atitit 烈火计划进展报告 r61
  9. Starday做日本跨境市场之王的决心:用品质和服务赢市场
  10. 代码签名、驱动签名的常见问题解答