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