ListView的优化
来源:互联网 发布:js shift 编辑:程序博客网 时间:2024/06/05 23:42
1. ListView需要设置adapter,它的item是通过adapter的方法getView(int position, View convertView, ViewGroup parent)获得的。
2. ListView中只有第一屏的item需要新建,它的引用会被存在RecycleBin对象内,在拖动时后面的item实际上是重从了之前创建的item。3. 根据上述,ListView在需要显示item时,最开始第一屏时,getView(int position, View convertView, ViewGroup parent )的第二个参数为null,显示第二屏或者回滚显示第一屏时,getView(int position, View convertView, ViewGroup parent )第二个参数是一个原来缓存的item,我们只需要在getView中把它内部数据更新即可。4. 如果item结构比较复杂,在更新一个已有的item内部数据的时候,查找item内部每一个元素也需要占用不少资源,所以,可以把这些内部元素的引用缓存起来,直接对其赋值,最有效的方法是把这些引用存到对应的item中,比较好的方法是使用setTag()方法。 据上四条,可得出:1. 在adapter的getView(int position, View convertView, ViewGroup parent)方法中,每次都new一个新的View返回,是性能最差的,浪费了ListView巧妙设计的一片苦心。2. 如果item内部元素简单,getView中如果传进来的view不为空,直接为其赋值即可。3. 如果item内部元素复杂,可以使用Google IO 大会中讨论的方法优化(如下):public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = mInflater.inflate(R.layout.list_item_icon_text, null); holder = new ViewHolder(); holder.icon1 = (ImageView) convertView.findViewById(R.id.icon1); holder.text1 = (TextView) convertView.findViewById(R.id.text1); convertView.setTag(holder); } else{ holder = (ViewHolder)convertView.getTag(); } holder.icon1.setImageResource(R.drawable.icon); holder.text1.setText(mData[position]); return holder;}static class ViewHolder { TextView text1; ImageView icon1;}
0 0
- ListView的优化
- listView的优化
- ListView的优化
- Listview的优化
- listView的优化
- ListView的优化
- ListView的优化
- listview的优化
- ListView的优化(1)
- ListView的优化(2)
- ListView的优化(3)
- ListView的优化
- listView的优化
- Listview的优化
- 关于listview的优化
- ListView的优化
- ListView的优化
- ListView的优化
- C图形界面
- 再发一个HTML5+WebSocket+PHP多进程 多人在线小蝌蚪游戏[强烈推荐]
- 第七周作业
- struts2----一个通用的文件下载代码示例
- C程序设计例解
- ListView的优化
- ubuntu下删除旧内核
- 水滴石穿C语言之指针综合谈
- poj 1270 Following Orders(拓扑排序+dfs)
- Android设置WIFI不休眠并确保黑屏后网络通信正常的方法
- 工厂模式
- UTF-8编码规则
- JXL组件生成报表报错(二)
- 解决eclipse中 Android SDK Manager 图标不见的方法