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

来源:互联网 发布:人工智能 硅基生命 编辑:程序博客网 时间:2024/05/29 19:49

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>();@Overridepublic Object getItem(int position) {return data.get(position);}@Overridepublic long getItemId(int position) {return 0;}@Overridepublic 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;}


0 0
原创粉丝点击