关于BaseAdapter的getView方法的理解

来源:互联网 发布:全新英朗刷启停软件 编辑:程序博客网 时间:2024/04/19 05:30

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

item0 - item1 - item2- item3,四个item充满屏幕,item0从屏幕上方完全消失,item4将出来,则item4将使用item0作为资源替代。

替代之后item4和item0一模一样,所以

@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubNearbyItemViewHolder 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;}


0 0
原创粉丝点击