我有一个活动来显示用户联系人列表。如果我的应用程序中存在联系人,我想显示一个按钮,否则我想显示一个WhatsApp和电报图标来邀请他们。项目图像在列表视图滚动后混合
当我打开活动时,每件事情都很好,但是当我向下滚动并回来时按照按钮和什么应用程序图标混合不同的联系人!有按钮的用户可能会看到whatsapp图标或其他人可能会看到按钮! 每当我向下滚动时,位置会改变!
我应该说所有联系人的姓名和手机号码是固定的和正确的!只是图像混合!
我知道这个问题是从我getView功能,但不知道如何解决它:( 我该如何解决TNX :)
这里是我的所有适配器代码:
public class LazyAdapterContactsList extends BaseAdapter {
private Activity activity;
private ArrayList<HashMap<String, String>> data;
private static LayoutInflater inflater=null;
public ImageLoader profileImageLoader;
HashMap<String, String> song;
public LazyAdapterContactsList(Activity a, ArrayList<HashMap<String, String>> d) {
activity = a;
data=d;
inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
profileImageLoader=new ImageLoader(activity.getApplicationContext());
}
public int getCount() {
return data.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
ViewHolder holder = null;
if(vi==null) {
vi = inflater.inflate(R.layout.contacts_list_row, null);
holder = new ViewHolder();
holder.listID = (TextView) vi.findViewById(R.id.MyContactslistIDPosition);
holder.name = (TextView) vi.findViewById(R.id.MyContactslistName);
holder.mobile = (TextView) vi.findViewById(R.id.MyContactslistMobileNumber);
holder.whatsAppIcon = (ImageView) vi.findViewById(R.id.MyContactsListWhatsApp);
holder.telegramIcon = (ImageView) vi.findViewById(R.id.MyContactsListTelegram);
holder.followBtn = (Button) vi.findViewById(R.id.MyContactsListFollowBtn);
holder.linearLayout = (LinearLayout) vi.findViewById(R.id.MyContactsthumbnail);
holder.profile_thumb_image = (ImageView) vi.findViewById(R.id.MyContactslist_image_profilephoto);
vi.setTag(holder);
}
else {
holder = (ViewHolder)vi.getTag();
}
song = data.get(position);
// Setting all values in listview
holder.listID.setText(song.get(MyContacts.KEY_ID));
holder.name.setText(song.get(MyContacts.KEY_NAME));
holder.mobile.setText(song.get(MyContacts.KEY_MOBILE));
if (song.get(MyContacts.KEY_USER_EXISTS).equals("1"))
{
if (song.get(MyContacts.KEY_THUMB_PROFILE_URL).equals("no")) {
} else {
profileImageLoader.DisplayImage(song.get(MyContacts.KEY_THUMB_PROFILE_URL), holder.profile_thumb_image);
}
}else {
holder.linearLayout.setVisibility(View.VISIBLE);
holder.followBtn.setVisibility(View.GONE);
}
return vi;
}
public static class ViewHolder {
public TextView textView ,listID ,name,mobile;
public ImageView whatsAppIcon ,telegramIcon;
public Button followBtn;
public LinearLayout linearLayout;
public ImageView profile_thumb_image;
}
}
tnx此更改修复了图标的问题:)但此代码仍存在问题: – Saeid
profileImageLoader.DisplayImage(song.get(MyContacts.KEY_THUMB_PROFILE_URL),holder.profile_thumb_image); – Saeid
它从服务器下载联系人图像。但仍然滚动后的联系人个人资料照片与海誓山盟混合! – Saeid