我發現了一個問題,使我的listview滾動生澀。我在滾動時從磁盤加載圖像。下面是示例代碼:Android ListView平滑滾動加載磁盤上的圖像
如果private class MyAdapter extends ArrayAdapter<MyListItemExt> {
//...
public View getView(int position, View convertView, ViewGroup parent) {
//...
Bitmap bit = SharedCode.sharedGetImageFromDiskOrInternet(thisAppContext, "contacts" + File.separator + data.image_file_name);
if (bit != null) {
ViewTreeObserver vto = icon.getViewTreeObserver();
vto.addOnGlobalLayoutListener(
new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
icon.getViewTreeObserver().removeGlobalOnLayoutListener(this);
icon.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
SharedCode.sharedUtilScaleImage(icon,false);
}
}
);
icon.setImageBitmap(bit);
icon.setBackgroundColor(data.backgroundColorInt);
icon.setPadding(1, 1, 1, 1);
icon.setVisibility(View.VISIBLE);
}
不知道這將是明智的使用異步這裏...(如果是這樣,這樣做的最佳方式),如果用戶在主UI線程上滾動,這將是壞和圖標參考文獻已失效。
這留下了啓動時預取所有圖像的另一種選擇,但我不喜歡在內存中保存圖像。
如果用戶在列表視圖中仍然可以看到iem,是否可以使用異步構造來加載背景中的圖像,並使它們在加載時可見?任何「最佳做法」在這? (我仍然是Android的新手)