ListView适配器中ViewHolder的超级简洁写法
2014-11-06 21:30
387 查看
首先说明一下,这种方法不是我发现的,只是在StackOverflow上面看到一个老外写的,觉得很赞。整理成一个demo后放到这里来,供对代码简化有追求的童鞋参考,或者说是有代码洁癖的人哈哈~确实在功能实现之后我们更多要考虑的是提升性能、简化代码、优化结构~~
1、首先是介绍ViewHolder类,如果不知道什么是ViewHolder的不建议看
,先去度娘学学ViewHolder再来好吧~~平时我们习惯写法是在adapter里面定义成内部类的,每个adapter一个或多个,然后各种findviewbyid,确实累~这里写成一个共有类型的类。主要是用SqareseArray来对view进行存取,具体什么是SqareseArray呢,可以上网查查,基本上能够替代HashMap,性能上面比后者更优。详细看代码,整个过程挺简单。使用泛型以实现对各种不同view的支持:
2、接下就是适配器的介绍,主要介绍getview里面对上面的ViewHolder的用法,看完不要被简洁性吓到:
3、最后可不可行呢?上个demo截图看看啦,需要代码的这里下载
1、首先是介绍ViewHolder类,如果不知道什么是ViewHolder的不建议看
,先去度娘学学ViewHolder再来好吧~~平时我们习惯写法是在adapter里面定义成内部类的,每个adapter一个或多个,然后各种findviewbyid,确实累~这里写成一个共有类型的类。主要是用SqareseArray来对view进行存取,具体什么是SqareseArray呢,可以上网查查,基本上能够替代HashMap,性能上面比后者更优。详细看代码,整个过程挺简单。使用泛型以实现对各种不同view的支持:
package com.kroc.adapter; import android.util.SparseArray; import android.view.View; public 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; } }
2、接下就是适配器的介绍,主要介绍getview里面对上面的ViewHolder的用法,看完不要被简洁性吓到:
public View getView(int position, View convertView, ViewGroup parent) { if(convertView == null){ convertView = mInflater.inflate(R.layout.item_lsv_main, null); } TextView nameTxtv = ViewHolder.get(convertView, R.id.item_name_txtv); nameTxtv.setText(mTestList.get(position)); return convertView; }超级简单有木有!!平时写了大把的findviewbyid现在一个都不用了,对,确实就是这么简单。
3、最后可不可行呢?上个demo截图看看啦,需要代码的这里下载
相关文章推荐
- Listview中ViewHolder简洁写法,避免适配器中重复定义ViewHolder,减少代码量
- Android ViewHolder的工具类,ListView超简洁写法
- ViewHolder简洁写法,避免适配器中重复定义ViewHolder,减少代码量
- android ListView优化之ViewHolder的超简洁写法
- ListView优化的时候ViewHolder的简洁写法
- 超级好用的仿recycleview的listview适配器与viewholder封装
- Android笔记之ListView的ViewHolder超简洁写法
- ViewHolder的 简洁写法
- 【工具类】ViewHolder模式超简洁写法
- ViewHolder模式超简洁写法,很cool!
- 泛型应用之打造Android万能ViewHolder-超简洁写法
- 【工具类】ViewHolder模式超简洁写法
- ViewHolder模式超简洁写法,很cool!
- android ViewHolder模式超简洁写法
- Android——ViewHolder简洁写法
- ViewHolder模式超简洁写法,很cool
- ViewHolder模式超简洁写法,绝对精彩!
- ViewHolder模式的简洁写法
- Java泛型应用之打造Android中ListView和GridView万能适配器【CommonAdapter】--超简洁写法
- ViewHolder模式超简洁写法