Listview mostra imagens erradas

Eu tenho um ListView com um ArrayAdapter mantendo linhas com uma imagem e uma string. Isso funcionou bem até que eu decidi que o carregamento das imagens era lento, então não pude carregar as imagens antes de mostrar a lista. Então comecei a carregar as imagens em um thread separado usando umAsyncTask.

Fiquei muito feliz com o resultado até começar a rolar a lista. Imagens erradas foram carregadas e não parece ser uma questão de a imagem ficar um pouco mais tarde. Se eu tentar classificar a lista, o problema ficará muito ruim e nenhuma das imagens estará na linha direit

Alguma idéia do que estou fazendo de errado?

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;
    }

questionAnswers(1)

yourAnswerToTheQuestion