欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android中 自定义数据绑定适配器BaseAdapter的方法

程序员文章站 2023-11-26 18:49:16
复制代码 代码如下:public class personadapter extends baseadapter { private list persons;/...

复制代码 代码如下:

public class personadapter extends baseadapter {
 private list persons;// 要绑定的数据
 private int resource;// 绑定的一个条目界面的id,此例中即为item.xml
 private layoutinflater inflater;// 布局填充器,它可以使用一个xml文件生成一个view对象,可以通过context获取实例对象

 public personadapter(context context, list persons, int resource) {
  inflater = (layoutinflater) context.getsystemservice(context.layout_inflater_service);
  this.resource = resource;
  this.persons = persons;
 }

 @override
 public int getcount() {// 得到要绑定的数据总数
  return persons.size();
 }

 @override
 public object getitem(int position) {// 给定索引值,得到索引值对应的对象
  return persons.get(position);
 }

 @override
 public long getitemid(int position) {// 获取条目id
  return position;
 }

 // listview有缓存功能,当显示第一页页面时会创建页面对象,显示第二页时重用第一页创建好了的对象
 // 取得条目界面:position代表当前条目所要绑定的数据在集合中的索引值
 @override
 public view getview(int position, view convertview, viewgroup parent) {
  textview nameview = null;
  textview phoneview = null;
  textview amountview = null;
  if (convertview == null) {// 显示第一页的时候convertview为空
   convertview = inflater.inflate(resource, null);// 生成条目对象
   nameview = (textview) convertview.findviewbyid(r.id.name);
   phoneview = (textview) convertview.findviewbyid(r.id.phone);
   amountview = (textview) convertview.findviewbyid(r.id.amount);

   viewcache cache = new viewcache();
   cache.amountview = amountview;
   cache.nameview = nameview;
   cache.phoneview = phoneview;
   convertview.settag(cache);
  } else {
   viewcache cache = (viewcache) convertview.gettag();
   amountview = cache.amountview;
   nameview = cache.nameview;
   phoneview = cache.phoneview;
  }

  person person = persons.get(position);
  // 实现数据绑定
  nameview.settext(person.getname());
  phoneview.settext(person.getphone());
  amountview.settext(person.getamount());
  return convertview;
 }

 private final class viewcache {
  public textview nameview;
  public textview phoneview;
  public textview amountview;
 }
}