Android ViewHolder的工具类,ListView超简洁写法
2015-11-22 00:00
495 查看
static class ViewHolder { public static <T extends View> T get(View view, int id) { SparseArray<View> viewHolder = (SparseArray<View>) view.getTag(); if (viewHolder == null) { viewHolder = new SparseArray<View>(); view.setTag(viewHolder); } View childView = viewHolder.get(id); if (childView == null) { childView = view.findViewById(id); viewHolder.put(id, childView); } return (T) childView; } } /** *这是工具类的实现,稍微说下实现的原理: * *1、ViewHolder既然是依赖View的Tag存放,但是以一个 SparseArray 集合存放。 * *2、判断View里的Tag是否存在viewHolder,不存在,赶紧叫她生一个。 * *3、然后在viewholder(也就是SparseArray)寻找View的索引,如果没有,赶紧findViewById一个 *put进去顺便return出来,如果已经存在,皆大欢喜,直接用呗。 * * */ /** *贴个BaseAdapter里面使用的代码: */ @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = inflater.inflate(R.layout.listview_item_layout, parent, false); } TextView name = Tools.ViewHolder.get(convertView, R.id.student_name); TextView age =Tools.ViewHolder.get(convertView, R.id.student_age); Student data = (Student) getItem(position); name.setText(data.getName()); age.setText(data.getAge()); return convertView; }
相关文章推荐
- ubuntu14.04编android2.3.1的一些坑
- 使用NDK构建android程序
- 浅谈Android Service
- 国内镜像下载Android源码
- Android 中的adapter和作用以及常见的adapter
- Android Activity转场动画
- 读Android蓝牙通信源码
- android Listview显示不同的item遇到的问题
- 第二章 安装Android开发环境
- 第一章 Android平台简介
- Android——真机无线调试
- Android学习之四大组件简单介绍
- android之Radio状态
- android studio快捷键
- Android基础 获取屏幕的宽与高
- SurfaceView的了解
- android 5.0 -- Palette
- Android-获取GPS数据方法
- Android Resource Types之Color State List 简介
- android各种界面跳转(调用系统联系人,通话记录,发短信,发邮件,google搜索)