ListView的优化(ViewHolder)
来源:互联网 发布:淘宝商城靴子 编辑:程序博客网 时间:2024/05/16 11:16
在设计listView显示的时候我们都希望列表在滑动的时候能够顺畅,不会出现卡死的情况,或是加载很慢的情况;在listView显示中convertView(静态View)避免了每次都去创建新的view,只要复用原有的convertView就可以了,从而达到优化的效果;
今天我们主要讲的是和convertView一起应用的ViewHolder;
1、先看如下代码:
public View getView(final int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { holder = new ViewHolder(); convertView = View.inflate(mContext, R.layout.item_contact_label_name, null); holder.tagName = (TextView)convertView.findViewById(R.id.tv_contact_tag_name); convertView.setTag(holder); } else { holder = (ViewHolder)convertView.getTag(); } TNPFriendTag tagItem = getItem(position); holder.tagName.setText(tagItem.getTagName()); return convertView;}private class ViewHolder { TextView tagName;}上面代码是我们最常见的,adapter里面要显示的字段在ViewHolder中定义全局变量,在getView(。。。)里面用到就以holder.tagName来用;
在初始化时用代码holder.tagName= (TextView)convertView.findViewById(R.id.tv_contact_tag_name);
2、下面我们来说下另一种写法,我们把ViewHolder进行重写,代码如下:
public class ViewHolder { /** * 一般listView * * @param view view * @param id id * @return T 返回类型 */ @SuppressWarnings("unchecked") 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.setTag(viewHolder); } View childView = viewHolder.get(id); if (childView == null) { childView = view.findViewById(id); viewHolder.put(id, childView); } return (T)childView; }}那么我们在getView里面初始化属性时就用
TextView title = ViewHolder.get(convertView,R.id.tv_insterest_category);
具体代码在下面贴出:
@Overridepublic View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = View.inflate(context, R.layout.item_property_insterest, null); } TextView title = ViewHolder.get(convertView, R.id.tv_insterest_category); TNPInterest insterestBean = dataList.get(position); title.setText(insterestBean.getName()); showInsterest(insterestBean, title); return convertView;}
总结:
0 0
- ListView的优化(ViewHolder)
- listview的优化---viewHolder
- ListView的优化--ViewHolder
- ListView的ViewHolder优化
- ViewHolder的listview的优化
- ListView的优化:convertView + viewHolder
- ListView优化--ViewHolder的使用
- Android ListView的性能优化(ViewHolder和HashMap)
- listview的优化及viewholder的使用
- listview的优化---viewHolder的封装
- android ListView的优化之 static ViewHolder
- 优化ListView使用到的ViewHolder
- 自定义Listview的适配器实现ViewHolder优化
- Android中优化ListView的ViewHolder模式
- ListView的性能优化-convertView和viewHolder
- listview加载性能优化ViewHolder (转)
- 利用ViewHolder优化BaseAdapter(ListView)
- 使用ViewHolder优化ListView
- Jackson属性和方法注解规避
- vs2015关于“当前不会命中断点 还没有为该文档加载任何符号”的解决方法
- 神曲当道,洗脑不断
- Struts2与ajax结合的缺点
- Android中的网络传输基本知识点
- ListView的优化(ViewHolder)
- iOS学习之 plist文件的读写
- 图片的内存优化
- 最近在开发中踩的坑--内存
- Jenkins基于Docker的安装
- C++中的函数默认参数值
- Jquery—创建表格
- codeapp引导图
- C语言-自增与自减运算符