標籤:android listview
又遇到ListView載入item時,多個item中的圖片會錯位的情況
現象如,同一個人的頭像顯示的亂七八糟
找了一張圖,很好地說明了問題的原因
問題原因就在於convertView的重用,當重用 convertView 時,最初一屏顯示 7 條記錄, getView 被調用 7 次,建立了 7 個 convertView,
當 Item1 划出螢幕, Item8 進入螢幕時,這時沒有為 Item8 建立新的 view 執行個體, Item8 複用的是Item1時候建立的view,
Item8 時刷上了 Item8 的資料,但是剛開始代碼是這樣寫的,本意是頭像為空白的時候不去載入,可以節省資源
String avatarUrl = user.getAvatar();if (avatarUrl!=null&&!avatarUrl.equals("")) {ImageLoader.getInstance().displayImage(avatarUrl, viewHolder.userLogo,ActivityUtil.getOptions(R.drawable.user_icon_default_main));}如果恰好item8的頭像是Null 字元串,就沒有賦值,導致item8顯示的是item1的頭像,以此類推,只要遇到空頭像,就會顯示它所重用的convertView原來顯示的圖片,也就造成了圖片錯位。
所以後來改成了下面這樣
// 頭像String avatarUrl = null;if (user.getAvatar() != null) {avatarUrl = user.getAvatar();}ImageLoader.getInstance().displayImage(avatarUrl, viewHolder.userLogo,ActivityUtil.getOptions(R.drawable.user_icon_default_main));不管頭像為不為空白,都去載入,把複用的convertView原來內建的圖片替換掉就可以了。
jason0539
部落格:http://blog.csdn.net/jason0539(轉載請說明出處)
推薦掃碼關注公眾號,看點不一樣的東西
Android錯誤之ListView載入錯位_ListView圖片錯位