关于BaseAdapter的getView方法的理解

为了节省资源,getView方法可以用convertView来循环显示,当上面的item消失时,它将以新的item从底部重生,充当新的item,这样就起到节省资源的效果。

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;
			}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值