我有一個自定義列表視圖,其左側有一個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的是succefully插在單擊的項目。但是,當我向下滾動列表時,我意識到在滾動列表之前點擊的位置上的所有其他元素也改變了圖像資源。
爲什麼會發生?我猜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);
}
正如你發現的,視圖在ListViews中被回收。我會做我自己的自定義適配器並重寫getView()並將選擇邏輯放在那裏。 –
實際上這個列表已經在一個適配器中,我也有getView方法。可以發佈一段代碼來說明你剛剛說的嗎?需要將參數ta傳遞給getView是int位置,View convertView,ViewGroup parent –
如果再次單擊該項目,會發生什麼情況?該圖標是否應該改回來,還是隻保持設置? –