Android开发中ListView绑定数据知识讲解,android 横向listview

6
回复
856
查看
[复制链接]

426

主题

1139

帖子

1930

安币

手工艺人

发表于 2018-10-8 11:49:29 | 显示全部楼层 |阅读模式

        List服务一般有4种绑定方法:

        

20180726155826131.jpg

        本文使用自定义适配器继承BaseAdapter来实现数据绑定,废话不说,直接上代码:

        1.自定义适配器:ShoppingProductAdapter

[Java] 查看源文件 复制代码
package com.example.msh.ModelInfo.Adapter;

import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageButton;
import android.widget.TextView;

import com.example.msh.mshaliapp.ProductCartActivity;
import com.example.msh.mshaliapp.R;

import java.util.List;

/**
 * 购物商品Adapter容器数据适配器
 * Author:William(徐威)
 * Create Time:2018-07-25
 */
public class ShoppingProductAdapter extends BaseAdapter {
 //公共对象
 List productList;
 Activity Con;
 private LayoutInflater mInflater;

 //构造函数
 public ShoppingProductAdapter(Activity context, List list) {
  this.productList = list;//获取传过来的数据
  this.Con = context;
  this.mInflater =context.getLayoutInflater();  //LayoutInflater.from(context);
 }

 //获取数量
 @Override
 public int getCount() {
  return productList.size();
 }

 @Override
 public Object getItem(int position) {
  return position;
 }

 @Override
 public long getItemId(int position) {
  return position;
 }

 /**
  * 视图标签赋值
  * Author:William(徐威)
  * Create Time:2018-07-25
  */
 @Override
 public View getView(int i, View view, ViewGroup viewGroup) {
  View row = view;
  ShoopingProductWrapper wrapper;
  if (row == null) {
//我们要适配的控件所在的视图
row=mInflater.inflate(R.layout.adapter_shopping_product, viewGroup, false);
wrapper  = new ShoopingProductWrapper(row);
row.setTag(wrapper);
  } else {
wrapper = (ShoopingProductWrapper) row.getTag();
  }

  //商品系统号
  TextView ProductSysNo=wrapper.getProductSysNo();
  //商品编号
  TextView ProductID=wrapper.getProductID();
  //商品名称
  TextView ProductName=wrapper.getProductName();
  //商品价格
  TextView Price=wrapper.getPrice();
  //购物数量/单位
  TextView ProductNum=wrapper.getProductNum();
  //商品金额
  TextView ProductAmt=wrapper.getProductAmt();
  //商品序号
  TextView ProductCartNumber=wrapper.getProductCartNumber();

  //设置控件要显示的文字
  ProductSysNo.setText(String.valueOf(productList.get(i).getProductSysNo()));
  ProductID.setText(productList.get(i).getProductID());

  //商品名称切割处理
  String productName = productList.get(i).getProductName();
  if (productName.length() > 17) {
productName = String.format("%s..", productName.substring(0, 18));
  }
  ProductName.setText(productName);

  Price.setText(productList.get(i).getPrice());
  ProductNum.setText(productList.get(i).getProductNum());
  ProductAmt.setText(productList.get(i).getProductAmt());
  ProductCartNumber.setText(String.valueOf( productList.get(i).getProductCartNumber()));


  //得到listview上的按钮
  ImageButton imgBtnDeleteProduct = row.findViewById(R.id.imgBtnDeleteProduct);
  imgBtnDeleteProduct.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View view) {
 //得到当前父对象
 View list = (View) (view.getParent().getParent());
 //同级的其它对象
 int productSysNo = Integer.parseInt(((TextView) list.findViewById(R.id.tvProductSysNo)).getText().toString());
 ((ProductCartActivity)Con).imgBtnDeleteProduct_listener(productSysNo);
}
  });


  return row;
 }

 /**
  * 商品购物车Adapter 容器
  * Author:William(徐威)
  * Create Time:2018-07-26
  */
 class ShoopingProductWrapper{

  public  ShoopingProductWrapper(View row){
this.row = row;
  }

  private View row;

  //商品系统号
  public TextView ProductSysNo;

  //商品编号
  public TextView ProductID;

  //商品名称
  public TextView ProductName;

  //商品价格
  public TextView Price;

  //购物数量/单位
  public TextView ProductNum;

  //商品金额
  public TextView ProductAmt;

  //商品序号
  public TextView ProductCartNumber;

  public TextView getProductSysNo() {
if (ProductSysNo == null) {
 ProductSysNo = (TextView) row.findViewById(R.id.tvProductSysNo);
}
return ProductSysNo;
  }

  public TextView getProductID() {
if (ProductID == null) {
 ProductID = (TextView) row.findViewById(R.id.tvProductID);
}
return ProductID;
  }

  public TextView getProductName() {
if (ProductName == null) {
 ProductName = (TextView) row.findViewById(R.id.tvProductName);
}
return ProductName;
  }

  public TextView getPrice() {
if (Price == null) {
 Price = (TextView) row.findViewById(R.id.tvPrice);
}
return Price;
  }

  public TextView getProductNum() {
if (ProductNum == null) {
 ProductNum = (TextView) row.findViewById(R.id.tvProductNum);
}
return ProductNum;
  }

  public TextView getProductAmt() {
if (ProductAmt == null) {
 ProductAmt = (TextView) row.findViewById(R.id.tvProductAmt);
}
return ProductAmt;
  }

  public TextView getProductCartNumber() {
if (ProductCartNumber == null) {
 ProductCartNumber = (TextView) row.findViewById(R.id.tvProductCartNumber);
}
return ProductCartNumber;
  }
 }
}

        2.代码中我使用到的适配器数据实体类:ShoppingProductAdapterInfo 就不具体贴出代码了

[Java] 查看源文件 复制代码
/**
* 商品购物车Adapter 实体类
* Author:William(徐威)
* Create Time:2018-07-25
*/
public class ShoppingProductAdapterInfo extends Object implements Serializable {

        //此处不具体申明属性了,仅做参考

        }

        3.Activity页面调用:

[Java] 查看源文件 复制代码
//填充购物篮
fillShoppingProduct(false);//此方法是我的业务逻辑方法,大家不用参考,主要调用是下面2句
shoppingAdapter = new ShoppingProductAdapter(this, shoppingCartList);//绑定适配器
lvProductCartList.setAdapter(shoppingAdapter);//设置listview的数据源为adapter

7

主题

1万

帖子

2316

安币

Android大神

Rank: 6Rank: 6

发表于 2018-10-8 12:03:35 | 显示全部楼层
支持楼主,支持安卓巴士!

0

主题

9366

帖子

2881

安币

Android大神

Rank: 6Rank: 6

发表于 2018-10-8 12:58:26 | 显示全部楼层
楼主是好人,回个帖会有安币吗?

325

主题

1020

帖子

704

安币

手工艺人

发表于 2018-10-8 14:09:56 | 显示全部楼层
楼主威武,以后多发干货,多办活动~!

317

主题

993

帖子

688

安币

手工艺人

发表于 2018-10-8 15:02:16 | 显示全部楼层
感谢大神~

0

主题

155

帖子

3183

安币

码皇(巴士元老)

Rank: 8Rank: 8

QQ
发表于 2018-10-8 15:13:42 | 显示全部楼层
感谢分享,安卓巴士有你更精彩:)

449

主题

1210

帖子

1949

安币

手工艺人

发表于 2018-10-8 15:47:48 | 显示全部楼层
安卓巴士是个不错的网站,我来顶个贴~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

领先的中文移动开发者社区
18620764416
7*24全天服务
意见反馈:1294855032@qq.com

扫一扫关注我们

Powered by Discuz! X3.2© 2001-2019 Comsenz Inc.( 粤ICP备15117877号 )