Listview muestra imágenes incorrectas

Tengo un ListView con un ArrayAdapter que contiene filas con una Imagen y una Cadena. Esto funcionó bien hasta que decidí que la carga de las imágenes era lenta, por lo que no pude cargar las imágenes antes de mostrar la lista. Entonces comencé a cargar las imágenes en un hilo separado usando unaAsyncTask.

Estaba muy contento con el resultado hasta que comencé a desplazar la lista. Se cargaron imágenes incorrectas y no parece que se trate de que la imagen se recupere un poco más tarde. Si intento ordenar la lista, el problema va muy mal y ninguna de las imágenes está en la fila derecha.

¿Alguna idea de lo que estoy haciendo mal?

public View getView(int position, View convertView, ViewGroup parent) {
        View v = convertView;
        ImageView imageView;
        TextView textView;
        if (v == null) {
            LayoutInflater vi = (LayoutInflater) getContext().getSystemService(
                    Context.LAYOUT_INFLATER_SERVICE);
            v = vi.inflate(R.layout.drink_list_row, null);
        }

        Drink drink = allItems.get(position);
        if (drink != null && v != null) {
            imageView = (ImageView) v.findViewById(R.id.picture);
            textView = (TextView) v.findViewById(R.id.drinkName);
            imageView.setVisibility(View.GONE);
            loadImageBitmap(drink, imageView);
            textView.setText(drink.getName());

            if (subItems != null && subItems.contains(drink)) {
                textView.setVisibility(View.VISIBLE);
                imageView.setVisibility(View.VISIBLE);
            } else {
                textView.setVisibility(View.GONE);
                imageView.setVisibility(View.GONE);
            }
        }
        return v;
    }

Respuestas a la pregunta(1)

Su respuesta a la pregunta