您的位置:首页 > 其它

解决ListView中图标错乱显示的问题

2017-06-29 09:54 127 查看
解决办法:看代码

package com.zhiren.coaltransportsystem.adapters;

import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.zhiren.coaltransportsystem.R;
import com.zhiren.coaltransportsystem.activities.Stationed_List_Activity;
import com.zhiren.coaltransportsystem.bean.ChoseAddressBean;

import java.util.List;

/**
* Created by Administrator on 2016/6/3.
*/
public class LocationAdapter extends BaseAdapter {

private Context context;
private List list;
private ImageView icon;
private Handler handler;

public LocationAdapter(List list, Context context, Handler handler) {
this.list = list;
this.context = context;
this.handler = handler;
}

@Override
public int getCount() {
return list.size();
}

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

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

@Override
public View getView(int position, View convertView, ViewGroup parent) {

if (position > list.size() || position < 0) {
return convertView;
}

ViewHolder viewHolder = null;
if (convertView == null) {
viewHolder = new ViewHolder();

convertView = View.inflate(context, R.layout.find_address_item, null);
viewHolder.iv_icon_chose = (ImageView) convertView.findViewById(R.id.iv_icon_chose);
viewHolder.tv_addressname_item = (TextView) convertView.findViewById(R.id.tv_addressname_item);
viewHolder.rl_icon_item = (RelativeLayout) convertView.findViewById(R.id.rl_icon_item);

convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}

viewHolder.iv_icon_chose.setVisibility(View.GONE);

final ChoseAddressBean choseAddressBean = (ChoseAddressBean) list.get(position);
viewHolder.tv_addressname_item.setText(choseAddressBean.name);
final ViewHolder finalViewHolder = viewHolder;
viewHolder.rl_icon_item.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
icon.setVisibility(View.GONE);
finalViewHolder.iv_icon_chose.setVisibility(View.VISIBLE);
icon = finalViewHolder.iv_icon_chose;
Message msg = Message.obtain();
msg.obj = choseAddressBean.name;
msg.what = Stationed_List_Activity.NEW_ADDRESS;
handler.sendMessage(msg);
}
});
if (position == 0) {
viewHolder.iv_icon_chose.setVisibility(View.VISIBLE);
icon = viewHolder.iv_icon_chose;
}

return convertView;
}

static class ViewHolder {
private ImageView iv_icon_chose;
private TextView tv_addressname_item;
private RelativeLayout rl_icon_item;
}
}

出现图片错乱显示的问题是因为快速翻动复用了View,那么每次将其重置即可。

本文出自 “移动平台开发” 博客,请务必保留此出处http://liuxudong1001.blog.51cto.com/10877072/1785841

4000
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: