首页 > 其他 > 详细

listView,listView优化的理解

时间:2016-02-27 21:55:16      阅读:201      评论:0      收藏:0      [点我收藏+]

ListView 主要负责以列表的形式显示数据,并根据需要从Adapter中获取列表项;
Adapter主要负责获取数据,并将数据加工为列表项制定的表现形式,供listView提取数据,并将数据加工为listView指定的表现形式,
ArrayAdapter
simpleAdapter
BaseAdapter:BaseAdapter是最基础的适配器,是抽象类,在使用时,开发人员手动创建其子类;
//todo
public View getView(int position,View convertView,ViewGroup parent){
//获取显示列表项对象,在该方法中应该完成数据获取,创建列表项对象,设置列表项中需要显示的数据等操作
//自定义类继承BaseAdapter,baseAdapter在工作时需要数据源,可以通过带参数的构造方法实现:
public class ContactsAdapter extends BaseAdapter{
private List<Contact>mContactsData;
public ContactsAdapter(List<Contact>contact){
this.mContactsData=contacts;
}
}
}


baseAdapter的优化
1.convertView的重用
根据系统会重复利用getView()方法中的convertView对象的特征,getView()方法的返回值应该是convertView对象,否则,系统在每次任意一条列表项时都需要重新创建convertView对象,资源浪费。
*View类提供了如下方法:
1.public void setTag(final Object tag)
2.public Object getTag()

*根据以上方法,可以自定义一个类,用于封装conVertView中的各个控件的引用。并通过getTag()
方法提取出来,就可以避免反复调用findViewbyID()造成系统资源浪费
*数据源的排序器接口compatator
private class NameComprarator implements Comparator<String>{
@ovrride
public int compata(String 1hs,String rhs){
return 1hs.comparaTo(rhs);
}
}
data=getData();
Collections.sort(data,new NameComparator());

实时更新ListView的数据显示
*调用Adapter定义的notifyDataSetChanged()方法即可通知更新,切ListView会更新显示》
*该方法更新UI,so just do it in MainThread. 注(当配对的List集合被赋值给另一个List集合,则更新无效)
Collections.sort()方法排序后,原List集合则根据Comparator实现的规则进行了排序,eg:
data.remove()/add()
adapter.notifyDataSetChanged();
*****************************************有效
data=new ArrayList<String>();
adapter.notifyDatasetChanged();
*****************************************无效

listView,listView优化的理解

原文:http://www.cnblogs.com/gentspy/p/5223510.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!