文档章节

listview适配器解放holder

辉辉123
 辉辉123
发布于 2015/10/22 23:34
字数 234
阅读 4
收藏 0
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;
}


本文转载自:

共有 人打赏支持
辉辉123
粉丝 0
博文 5
码字总数 938
作品 0
深圳
程序员
RecyclerView的通用适配器,和滚动时不加载图片的封装

很早之前写过一篇讲ListView的万能适配器的方案通用Adapter与ListView滚动时不加载图片的封装,可以让你在写ListView的Adapter时只关注对控件设置内容,而不需要再去考虑ViewHolder、控件初始...

kymjs张涛
2015/10/11
1K
2
listview加载性能优化ViewHolder

在android开发中Listview是一个很重要的组件,它以列表的形式根据数据的长自适应展示具体内容,用户可以自由的定义listview每一列的布局,但当listview有大量的数据需要加载的时候,会占据大量...

stefanliao
2012/05/21
0
0
Android开发之多层树型目录的实现

转自:http://user.qzone.qq.com/314154775/infocenter#!app=2&via=QZ.HashRefresh&pos=1335594212 树型目录是一种直观的列表显示目录方式,在用户界面得到普遍使用,如Windows的资源管理器窗...

slimboy123
2015/11/20
0
0
Android BaseAdapter的使用

现在有许多的适配器供我们使用,但是我们发现处理复杂的itmes使往往使用的是BaseAdapter,下面上代码 main.xml list_item.xml Activity 运行结果如下:...

ForingY
2016/12/09
12
0
android ListView详解

本人android新手,最近看见一篇很不错的listview详解,觉得受益匪浅,特来转载分享希望对大家有帮助,同时很感谢作者的无私奉献 列表的显示需要三个元素: 1.ListVeiw 用来展示列表的View。 2....

Pikachu“
2013/01/02
514
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

7 个致命的 Linux 命令

导读 如果你是一个 Linux 新手,在好奇心的驱使下,可能会去尝试从各个渠道获得的命令。以下是 7 个致命的 Linux 命令,轻则使你的数据造成丢失,重则使你的系统造成瘫痪,所以,你应当竭力避...

问题终结者
今天
0
0
设计模式:工厂方法模式(工厂模式)

工厂方法模式才是真正的工厂模式,前面讲到的静态工厂模式实际上不能说是一种真正意义上的设计模式,只是一种变成习惯。 工厂方法的类图: 这里面涉及到四个种类: 1、抽象产品: Product 2、...

京一
今天
0
0
区块链和数据库,技术到底有何区别?

关于数据库和区块链,总会有很多的困惑。区块链其实是一种数据库,因为他是数字账本,并且在区块的数据结构上存储信息。数据库中存储信息的结构被称为表格。但是,区块链是数据库,数据库可不...

HiBlock
今天
0
0
react native 开发碰到的问题

react-navigation v2 问题 问题: static navigationOptions = ({navigation, navigationOptions}) => ({ headerTitle: ( <Text style={{color:"#fff"}}>我的</Text> ), headerRight: ( <View......

罗培海
今天
0
0
Mac Docker安装流程

久仰Docker大名已久,于是今天趁着有空,尝试了一下Docker 先是从docker的官网上下载下来mac版本的docker安装包,安装很简易,就直接拖图标就好了。 https://www.docker.com/products/docker...

writeademo
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部