关于BaseAdapter的getView方法的理解
2015-08-12 15:40
253 查看
为了节省资源,getView方法可以用convertView来循环显示,当上面的item消失时,它将以新的item从底部重生,充当新的item,这样就起到节省资源的效果。
item0 - item1 - item2- item3,四个item充满屏幕,item0从屏幕上方完全消失,item4将出来,则item4将使用item0作为资源替代。
替代之后item4和item0一模一样,所以
item0 - item1 - item2- item3,四个item充满屏幕,item0从屏幕上方完全消失,item4将出来,则item4将使用item0作为资源替代。
替代之后item4和item0一模一样,所以
@Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub NearbyItemViewHolder holder = null; if (convertView == null) { convertView = mInflater.inflate(R.layout.listview_items, null); holder = (NearbyItemViewHolder)convertView.getTag(); if (holder == null){ holder = new NearbyItemViewHolder(); holder.otherList = (LinearLayout) convertView.findViewById(R.id.other_list); holder.mineList = (LinearLayout) convertView.findViewById(R.id.mine_list); convertView.setTag(holder);//holder放入convertView的tag中,以便之后用,从而不用new } }else{ holder = (NearbyItemViewHolder)convertView.getTag();//holder也是重用,从convertView的tag中取出holder资源 } convertView.setTag(R.id.list_item_position, position);//另一种setTag,这样可以塞多个tag //由于convertView是重用了刚消失的item的资源,所以现在和之前消失的item一模一样,所以下面要将item中的图标或者文字之类的替换成现在需要的 holder.otherList.setXXXX(listXXX.get(position).getXXXX); holder.mineList.setYYYY(listXXX.get(position).getYYYY); return convertView; } class NearbyItemViewHolder { otherList; mineList; }
相关文章推荐
- 我的VIM配置(ubuntu)语法高亮 自动补全
- MySQL索引类型
- Shell脚本学习(一) - 创建脚本
- poj1067 威佐夫博奕(Wythoff Game)
- html之 《meta》设置缓存
- C#中隐式操作CMD命令行窗口
- JS array数组元素的添加和删除
- vmware虚拟机NAT通信方式配置
- php-app接口实现(json和xml)
- SpingMVC中的三种HandlerMapping(映射器)
- UIView中常见的方法总结
- HDU 3743 Frosh Week 【归并排序模板题】
- POJ 1179 Polygon
- 提交表单时的中文乱码问题
- Web.Config和Sql Server2005连接字符串总结
- Eclipse导入外部项目问题总结
- CSUOJ:集训队组队计划
- kvm(1)之快速使用
- Agri-Net POJ 1258 【Prim】
- sybase 优化总结