博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
listView,listView优化的理解
阅读量:6173 次
发布时间:2019-06-21

本文共 1554 字,大约阅读时间需要 5 分钟。

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();
*****************************************无效

转载于:https://www.cnblogs.com/gentspy/p/5223510.html

你可能感兴趣的文章
Android NestedScrolling解决滑动冲突问题(2) - fling问题与NestedScroll++
查看>>
Tomcat和JVM的性能调优总结
查看>>
硬件线程和软件线程的区别
查看>>
时间戳前
查看>>
11月22日晚上海交大《PMI敏捷实践指南解读》线上沙龙欢迎你的参与!
查看>>
初识 Linux (VMware、CentOS 7)
查看>>
使用SpringMVC完成文件上传
查看>>
mysql Load Data InFile 的用法
查看>>
Go new vs make
查看>>
【云宏大讲坛】超融合,融合的不仅是基础架构
查看>>
pytnon入门的一些小实例
查看>>
ubuntu下的dock工具
查看>>
饿了么被上海市市场监督局予以警告处分
查看>>
Java项目读取配置文件时,找不到指定的文件???
查看>>
lua/luajit and tcc
查看>>
前端安全即JS代码安全,前端源码安全探讨!
查看>>
如何快速实现异地不同网络打印机共享
查看>>
openinstall免费服务对App推广有哪些作用?
查看>>
基于Docker的微服务CI CD流水线
查看>>
学好SEO需要掌握哪些知识要点?
查看>>