使用 ArrayAdapter 在 StickyListHeadersListView 中显示 ImageView

Display ImageView in StickyListHeadersListView using an ArrayAdapter

我正在实施 StickyListHeadersListView 以显示联系信息。我正在使用实现 StickyListHeadersAdapterArrayAdapter<Contact>。工作正常,每个项目显示一个图像和一个字符串,问题是图像在滚动时交换,我不确定为什么

列表视图:

<se.emilsjolander.stickylistheaders.StickyListHeadersListView
    android:id="@+id/contact_listview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_weight="1.01"
    android:background="#FFFFFF">
</se.emilsjolander.stickylistheaders.StickyListHeadersListView>


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

    if (convertView == null) {
        convertView = inflater.inflate(R.layout.contact_row, null, false);
        convertView.setTag(R.id.chk_selected, convertView.findViewById(R.id.chk_selected));
        convertView.setTag(R.id.contact_avatar, convertView.findViewById(R.id.contact_avatar));
        convertView.setTag(R.id.contact_name, convertView.findViewById(R.id.contact_name));
        convertView.setTag(R.id.contact_info, convertView.findViewById(R.id.contact_info));
        convertView.setBackgroundColor(Color.WHITE);
    }

    fill((ViewGroup) convertView, getItem(position));
        return convertView;
    }


    private void fill(ViewGroup rl, Contact contact) {  
        boolean state = itemChecked.get(contact.getId()) != null ? itemChecked.get(contact.getId()): false;
        ((CheckBox) rl.getTag(R.id.chk_selected)).setChecked(state);        
        ((CheckBox) rl.getTag(R.id.chk_selected)).setOnCheckedChangeListener(new chkOnCheckedChangeListener(contact.getId()));

        if(!(contact.getFoto() == null || contact.getFoto().equals(""))) {
            fillImageView(rl, R.id.contact_avatar, contact.getFoto());
        }

        fillTextViewNombre(rl, R.id.contact_name, contact.getName());
        fillTextViewMail(rl, R.id.contact_info, contact.getInfo());
    }

    private void fillTextViewNombre(ViewGroup rl, int id, String description) {
        TextView t = ((TextView) rl.getTag(id));
        t.setText(description);
        t.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18);
    }

    private void fillTextViewMail(ViewGroup rl, int id, String description) {
        TextView t = ((TextView) rl.getTag(id));
        t.setText(description);
        t.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14);
    }

    private static void fillImageView(ViewGroup rl, int id, String bitmap) {
    ImageView t = ((ImageView) rl.getTag(id));
    MainActivity.imageLoader.DisplayImage(bitmap, t);
}

问题是 imageLoader 创建的线程在用户滚动时与列表视图不同步,所以我最终使用了通用图像下载器并且工作完美。