我正在製作一個圖庫應用程序,當我在Adapter類的Getview中執行我的asynctask時,只有onynctask的preExecution部分獲取執行,而其他人不執行。從asynctask獲取圖像到自定義Gridview適配器
所以,我看到的是一個進度條,但不下載後的圖像...我只是活動的進度條不斷滾動
這裏是我的Getview方法的代碼
enter public View getView(int position, View convertview, ViewGroup parent) {
// TODO Auto-generated method stub
img=new ImageView(mContext);
new DownloadImage().execute();
return img;
}
這是我Asynctaskclass
private class DownloadImage extends AsyncTask<String, Void, Bitmap>{
@Override
protected void onPreExecute() {
super.onPreExecute();
mProgressDialog = new ProgressDialog(mContext);
// Set progressdialog title
mProgressDialog.setTitle("Download Image");
// Set progressdialog message
mProgressDialog.setMessage("Loading...");
mProgressDialog.setIndeterminate(false);
// Show progressdialog
mProgressDialog.show();
}
@Override
protected Bitmap doInBackground(String... URL) {
// TODO Auto-generated method stub
String imageURL = URL[0];
Bitmap bitmap = null;
try {
// Download Image from URL
InputStream input = new java.net.URL(imageURL).openStream();
// Decode Bitmap
bitmap = BitmapFactory.decodeStream(input);
} catch (Exception e) {
e.printStackTrace();
}
return bitmap;
}
@Override
protected void onPostExecute(Bitmap result) {
// Set the bitmap into ImageView
img.setImageBitmap(result);
// Close progressdialog
mProgressDialog.dismiss();
}
}
我想執行onPreExecution我GetView方法返回IMG變量,以我的MainActivity後,只需右鍵class..here是
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
setTitle("My Gallery");
GridView g=(GridView)findViewById(R.id.gallery);
// Gallery g=(Gallery)findViewById(R.id.gallery);
// ImageAdapter width=new ImageAdapter(context);
g.setAdapter(new ImageAdapter(this));
Resources r = getResources();
float padding = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
GRID_PADDING, r.getDisplayMetrics());
g.setNumColumns(NUM_OF_COLUMN);
g.setColumnWidth(columnWidth);
g.setStretchMode(GridView.NO_STRETCH);
g.setPadding((int) padding, (int) padding, (int) padding,
(int) padding);
// g.setHorizontalSpacing((int) padding);
// g.setVerticalSpacing((int) padding);
g.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView parent, View v, int position,
long id) {
// TODO Auto-generated method stub
Intent i=new Intent(getApplicationContext(),ImageViewPager.class);
i.putExtra("id", position);
startActivity(i);
}
});
有人可以告訴我該怎麼做?
所以你的意思是說,我應該在MainActivity並讓所有的影像,然後應該設置適配器後,執行的AsyncTask? – 2014-08-29 14:32:32
是的。根據您的圖片的數量/大小,您可能需要考慮我提到的圖書館。但是,是的,你不想在'getView()' – codeMagic 2014-08-29 14:42:15
謝謝@codeMagic。你可以參考我的任何示例代碼? – 2014-08-29 18:16:40