listView中item复用会出现显示异常

listView中item复用时,会导致显示异常,在网上搜了一大圈,终于找到解决的方法了,激动啊,做个笔记。。。(给自己看的)



<span style="font-family: Arial, Helvetica, sans-serif;">class AddCityAdapter extends BaseAdapter{</span>
		
		<span style="color:#ff0000;">//1.定义一个list用于保存操作过的item的下标位置</span>
        <span style="white-space:pre">	</span>private List<Integer> mSelect = new ArrayList<Integer>();

		@Override
		public Object getItem(int position) {
			return data.get(position);
		}

		@Override
		public long getItemId(int position) {
			return 0;
		}

		@Override
		public View getView(final int position, View convertView, ViewGroup parent) {
			ViewHolder holder = null;
			if (convertView == null) {
				convertView = View.inflate(DeleteCityActivity.this,R.layout.item_addcity, null);
				holder = new ViewHolder();
				
				holder.tgbtn_city_delete = (ToggleButton) convertView.findViewById(R.id.tgbtn_city_delete);
				
				holder.tgbtn_city_delete.setTag(""+position);
				
				
				holder.weatherDesc = (ImageView) convertView.findViewById(R.id.iv_city_weather);
				holder.cityName = (TextView) convertView.findViewById(R.id.tv_city_name);
				holder.tmp = (TextView) convertView.findViewById(R.id.tv_city_tmp);
				
				holder.btn_city_delete = (Button) convertView.findViewById(R.id.btn_city_delete);
				
				convertView.setTag(holder);
			} else {
				holder = (ViewHolder) convertView.getTag();
			}
			
			holder.tgbtn_city_delete.setOnClickListener(new View.OnClickListener() {
					
				<span style="white-space:pre">	</span>@Override
				<span style="white-space:pre">	</span>public void onClick(View v) {
				<span style="white-space:pre">		</span><span style="color:#ff0000;">//2.保存已操作过的item的下标位置</span>
	                    <span style="white-space:pre">			</span>mSelect.add(new Integer(position));
				<span style="white-space:pre">	</span>}
			<span style="white-space:pre">	</span>});
			}
<span style="white-space:pre">			</span><span style="color:#ff0000;">//3.<span style="font-family: Arial, Helvetica, sans-serif;">当item复用时就会重新调用此方法,因此可以在此判断</span><span style="font-family: Arial, Helvetica, sans-serif;">mSelect中是否有操作过的item</span></span>
			if (mSelect.indexOf(position) > -1) {
				holder.tgbtn_city_delete.setChecked(true);
			}else{
				holder.tgbtn_city_delete.setChecked(false);
			}
			
			return convertView;
		}


猜你喜欢

转载自blog.csdn.net/u011797571/article/details/52015979