我的ListView
中的每個項目都包含一個ImageView
和一個TextView
,這將填充遠程信息。另一個getView被多次調用
我得到了一個URL爲ImageView
,因此我開始AsyncTask
下載圖像,並將下載的位圖調用setImageBitmap
。
這很好,但是當創建ListView時,經常會調用getView()
。 它調用前10行getView
的7倍(只有7個可見)。 (所以:0,1等,10,0,1等)。
然後我可以順利地滾動到第10項。但是之後,對於每個新行,listview再次調用前10個項目的getView
的7倍。 (這會造成滯後..)
但是當我從AsyncTask
刪除setImageBitmap
,這一切都不會發生!
可能是什麼問題?難道這是一些佈局是大的,這將導致另一條getViews?
這裏一些代碼:
<ListView
android:id="@+id/mylist"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_alignParentBottom="true"
android:layout_below="@+id/mydivider"
android:divider="@+color/mycolor"
android:dividerHeight="2dp"
android:fadingEdge="none"
android:fastScrollEnabled="true"
android:listSelector="@android:color/transparent"
android:scrollbars="horizontal"
android:scrollingCache="false"
android:smoothScrollbar="false" />
的的AsyncTask:
public static class MyTask extends AsyncTask<String, Integer, Bitmap> {
private LruCache<String, Bitmap> mMap;
private String mUri;
private int mPosition;
private ViewHolder mHolder;
public MyTask (ViewHolder holder, int position, LruCache<String, Bitmap> map) {
mMap = map;
mHolder = holder;
mPosition = position;
}
@Override
protected Bitmap doInBackground(String... url) {
mUri = url[0];
return getBitmapFromURL(mUri);
}
@Override
protected void onPostExecute(Bitmap b) {
if (b != null) {
mMap.put(mUri, b);
if (mPosition == mHolder.position) {
holder.image.setImageBitmap(b);
}
}
};
}
getView()
row = convertView;
ViewHolder holder;
if (row == null) {
row = vi.inflate(R.layout.mylayout, null);
holder = new ViewHolder();
holder.image = (ImageView) row.findViewById(R.id.myimage);
holder.title = (TextView) row.findViewById(R.id.mytext);
row.setTag(holder);
} else {
holder = (ViewHolder) row.getTag();
}
holder.title.setText("text");
holder.image.setImageResource(R.drawable.mydefaulticon);
holder.position = position;
startMyTask(content, holder, position);
一些更多的信息:
當新視圖創建堆棧跟蹤顯示n中的getView從ListView.makeAndAddView()
稱爲但是在getViews的無用連勝它是從ListView.measureHeigthOfChildren()
所以好像當我設置位圖的佈局發生變化來了...
是看起來那麼即使我認爲家長應重新佈局時,圖像會添加它自身作爲父高度也得到由that..But影響,這是我想不知道.. –