<转>Android ListAdapter的高级功能
来源:互联网 发布:usb v2.0数据接口 编辑:程序博客网 时间:2024/06/04 19:48
转载自:http://yidongkaifa.iteye.com/blog/1809308
昨天某同学要转行做android,我问他ListView的Adapter用哪个,他说用SimpleAdapter。如果对Adapter的认识只停留在SimpleAdapter不是很够力啊。在学习android的时候大体都经历了SimpleAdapter->BaseAdapter的过程。对于一般应用,到BaseAdapter也就够了。BaseAdapter是ListAdapter的子类,给开发者提供了一些不常用方法的默认实现。而android还提供了更多的功能要靠ListAdapter接口使用。我假设看官们已经熟悉了BaseAdapter的使用,也知道了ListView重用view来展示数据这一点。所以捡重点说。
1. 关于刷新顺序
- long getItemId(int position)
- boolean hasStableIds()
getItemId是干嘛用的?在调用 invalidateView()时,ListView会刷新显示内容。如果内容的id是有效的,系统会跟据id来确定当前显示哪条内容,也就是firstVisibleChild的位置。id是否有效通过hasStableIds()确定。
2. 关于内容类型
- int getItemViewType(int position)
- int getViewTypeCount()
如果ListView需要显示多种类型的内容,就需要有不同的缓存拿来使用。举个例子,position是奇数时getView()返回的是A类型的View;偶数的时候返回B类型的View。那么就需要在getViewTypeCount()中返回2;在getItemViewType()中当position是单数时返回一个值,双数时返回另外一个值。ListView根据返回值缓存和重用View,这样在getView()中调用强制类型转换就不会出现类型转换错误了。
不同类型的View也可一用FrameLayout集成在一个View中显示,这样View的结构就会变得很复杂,而且消耗更多的内存。
3. 关于点击
- boolean areAllItemsEnabled()
- boolean isEnabled(int position)
4. 观察者模式?
- registerDataSetObserver(DataSetObserver observer)
- unregisterDataSetObserver(DataSetObserver observer)
总的来说,android对ListView的考虑还是比较细致的。作为一般使用BaseAdapter就够用了,需要显示不同类型的View等特殊控制时去实现别的方法。
- <转>Android ListAdapter的高级功能
- Android ListAdapter的高级功能
- Android BaseAdapter 和ListAdapter的介绍
- Android ListView和ListAdapter
- 【android】ListView和ListAdapter
- Android ListView和ListAdapter
- Android开发 ListAdapter实现
- Android ListView和ListAdapter
- Android ListView和ListAdapter
- Android ListView和ListAdapter
- Android ListView和ListAdapter
- Android ListView和ListAdapter
- Android的Listview的ListAdapter关于View的经典写法
- Android BaseAdapter详解(实现了SimpleAdapter,ListAdapter的接口)
- Android BaseAdapter详解(实现了SimpleAdapter,ListAdapter的接口)
- ListAdapter
- 深入探讨Android----必不可少的高级功能
- 深入探讨Android----必不可少的高级功能
- Linux 下yiic 命令执行问题
- C#长整型时间与java长整型时间转换
- windows线程检测主机信息更改
- HelloWorld 之 概述
- ubuntu/wireshark --Lua: Error during loading: [string "/usr/share/wireshark/init.lua"]:45问题解决
- <转>Android ListAdapter的高级功能
- Ubuntu 12.04 下安装Xen 以及使用Xen 安装winXP虚拟机
- 跟着写操作系统(开发环境的搭建)
- Cocos2d-x教程(19)-cocos2d-x.xcodeproj-2.2.x版本对cocos2dx文件的引用以及Cocos2d-x 2.2.0版本后项目拷贝出来无法运行的原因
- Erlang不能错过的盛宴
- 12个乒乓球最少三次称量找不同球的方法
- 获取客户端的真实ip
- 容器指针越界
- ubuntu 12.04 eclipse 报 program g++ not found in path