Android优化adapter及SparseArray介绍
来源:互联网 发布:c语言贪吃蛇源代码思路 编辑:程序博客网 时间:2024/06/10 18:28
在鸿洋大神的博文里介绍了Android 快速开发系列 打造万能的ListView GridView 适配器
在此,我直接把核心的部分截取出来详细记录一下:
这个是我在项目中使用的一个工具类:
public class ViewHolderUtil { /** * 获取容器中指定的元素 * * @param view * @param id * @return */ @SuppressWarnings("unchecked") public static <T extends View> T get(View convertView, int id) { SparseArray<View> viewHolder = (SparseArray<View>) view.getTag(convertView.getId());//以id为键值的map if (viewHolder == null) { viewHolder = new SparseArray<View>(); view.setTag(convertView.getId(), viewHolder);//设置子view的map } View childView = viewHolder.get(id);//从map中取子view if (childView == null) { childView = convertView.findViewById(id); viewHolder.put(id, childView);//将子view存放在map中 } return (T) childView; }}
在使用时,代码如下
@Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = inflater.inflate(R.layout.search_item, null); } TextView title = ViewHolderUtil.get(convertView, R.id.title);//保证convertView不为空 TextView authorTime = ViewHolderUtil.get(convertView, R.id.authorTime); TextView searchDetail = ViewHolderUtil.get(convertView, R.id.searchDetail); SearchResult result = dataList.get(position); if (result != null) { title.setText(result.title); authorTime.setText(result.authorTime); searchDetail.setText(result.searchDetail); } return convertView; }
因为convertView的tag以被设置为子view的map,所以在后面的使用中不可再次设置tag
为何map会使用SparseArray而不是HashMap呢?因为Android源码中就是这么干的,SparseArray比HashMap效率高多少
Android中的稀疏数组:SparseArray
结论是:当HashMap的key为整数时,则可以考虑使用SparseArray。
我写的CSDN博客客户端介绍:http://blog.csdn.net/brian512/article/details/43168141
点击查看应用详情
0 0
- Android优化adapter及SparseArray介绍
- Android性能优化----SparseArray
- Android性能优化:SparseArray
- android性能优化之SparseArray
- android:应用性能优化SparseArray
- Android性能优化之SparseArray
- Android性能优化之SparseArray
- Android--SparseArray<E>详细介绍
- Android--SparseArray<E>详细介绍
- Android--Adapter深入理解及ListView优化
- Android中的Adapter用法及优化
- SparseArray替代HashMap----Android应用性能优化
- Android优化工具SparseArray稀疏数组
- Android:使用SparseArray代替HashMap优化性能
- android性能优化SparseArray和ArrayMap
- Android内存优化—SparseArray和ArrayMap
- Android性能优化之SparseArray与ArrayMap
- Android应用性能优化之使用SparseArray
- android canvas博客详解
- 3.1.1 如何选择全扫描操作
- 华为机试题:密码验证合格程序
- navicat 修改数据库字符集、字符排序规则、数据库引擎
- linux rpm安装 php mysql apche
- Android优化adapter及SparseArray介绍
- iOS 推荐标签_长度不等_collection布局
- 3.1.2 全扫描与舍弃
- 3.1.3 全扫描与多块读取
- c#的aspx页面中引用了用户控件,如何相互调用后台方法
- hadoop1 rpc
- 3.1.4 全扫描与高水位线
- 聊聊并发(1):深入分析Volatile的实现原理
- 闪屏页开发