我正在使用 SimpleCursorTreeAdapter 在数据库中显示数据。我正在使用加载器来管理所有游标。一切正常。但是每个子视图中都有一些图像。这会在滚动时导致明显的卡顿。所以我想使用异步任务来解码背景中的图像。类似(伪代码):
@Override
protected void bindChildView(View view, Context context, Cursor cursor, boolean isLastChild) {
super.bindChildView(view, context, cursor, isLastChild);
String imgFile = cursor.getString(MyDatabaseHelper.FILE_INDEX);
new asyncLoadImage().execute(imgFile);
}
private class asyncLoadImage extends AsyncTask<String, Void, Bitmap> {
@Override
protected Bitmap doInBackground(String... arg0) {
String imgFile = arg0[0];
return Utils.getBitMap(imgFile);//psuedocode
}
@Override
protected void onPostExecute(Bitmap bm) {
ImageView imageView = new ImageView(mCtx);
imageView.setTag(mID);
imageView.setImageBitmap(bm);
//ok got the imageview. where do I append it ??
}
}
当图像视图在 onPostExecute() 函数中准备好时,bindChildView 中提供的视图可能已被回收并指向一些不同的子元素。如何确定附加图像视图的位置?