左側に ImageView があり、その後に EditText があり、右側に別の ImageView がありますが、最初はソースがありません。
次に、このビューに onItemClickListener があります。アイテムのクリック時に、右側の ImageView のソース (最初はソースがないもの) を変更したいと思います。
このために、次のコードを実装しました。
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
ImageView icone2 = (ImageView) view.findViewById(R.id.icone2_lugar);
icone2.setImageResource(R.drawable.flag_origem);
}
クリックした項目に ImageView が正常に挿入されました。ただし、リストを下にスクロールすると、リストをスクロールする前にクリックした位置と同じ位置にあった他のすべての要素も画像リソースを変更していることに気付きました。
なぜそれが起こっているのですか?Androidは、すべての要素ビューを同時にロードするのではなく、リストをスクロールするときに新しいビューをロードすると思うので、onItemClickのViewパラメータを取得してリスト内の要素のリソースを変更することはできないと思います.
では、リスト ビューでクリックされた要素のリソースを変更するにはどうすればよいでしょうか。
編集:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View linha = convertView;
ArmazenadorLugar armazenador = null;
if (linha == null) {
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
linha = inflater.inflate(R.layout.linha_lugar, parent, false);
armazenador = new ArmazenadorLugar(linha);
linha.setTag(armazenador);
} else {
armazenador = (ArmazenadorLugar) linha.getTag();
}
armazenador.popularFormulario(mListaLugares.get(position), mContext);
return linha;
}
public LugarAndroid getItem(int position) {
return mListaLugares.get(position);
}