我有一个自定义列表视图,左边有一个 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);
}