最後,我改變我的代碼,並使用萬能圖像裝載機庫如何使用的AsyncTask在PaperAdapter
我用paperadapter像代碼顯示網址的圖像,它工作正常。
@Override
public Object instantiateItem(final ViewGroup container, final int position) {
Drawable[] imageDrawable = new Drawable[3];
for (int i = 0; i < 3; i++) {
imageDrawable[i] = LoadImageFromWebOperations(server_url+ image_name.replace(" ","")+ "_0" +String.valueOf(i + 1) + ".jpg");
}
imageView = new ImageView(mContext);
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setImageDrawable(imageDrawable[position]);
container.addView(imageView, 0);
return imageView;
}
,但我想用的AsyncTask要做到這一點,如代碼
@Override
public Object instantiateItem(final ViewGroup container, final int position) {
AsyncTask<String, Void, Drawable[]> loadingImage = new AsyncTask<String, Void, Drawable[]>(){
@Override
protected Drawable[] doInBackground(String... params) {
// TODO Auto-generated method stub
Drawable imageDrawable[] = new Drawable[3];
for (int i = 0; i < 3; i++) {
imageDrawable[i] = LoadImageFromWebOperations(server_url
+ image_name.replace(" ","")+ "_0" + String.valueOf(i + 1) + ".jpg");
System.out.println("doInBackground="+position);
}
return imageDrawable;
}
@Override
protected void onPostExecute(Drawable[] result) {
System.out.println("onPostExecute="+position);
imageView = new ImageView(getBaseContext());
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setImageDrawable(result[position]);
container.addView(imageView, 0);
}
});
}
}; loadingImage.execute();
return imageView;
}
它不工作fine.i發現該位置「1」爲空沒有圖像,但位置0 2不爲空,等待一些建議,謝謝!
爲什麼你還要加載多個圖像,每頁的循環?上面哪個代碼是你想要使用的代碼,你想要做什麼? –
@androiddeveloper感謝您的答覆。我使用viewpaper指示器顯示來自url的圖像。使用循環,因爲3個圖像具有相似的文件名,只是不同的數字 – Giggle
,但instantiateItem並不意味着你目前在這個頁面上。它只是加載頁面。例如,如果您轉到第1頁,這意味着頁面0,1,2需要調用此功能(以便用戶在屏幕滾動時能夠看到它們)。如果您希望監聽正在更改的頁面,則需要調用setOnPageChangeListener。 instantiateItem用於初始化頁面,類似於AdapterView的getView(但沒有重新使用視圖)。另外,請回答我問過的問題(或者修改你的帖子,哪個更好),以便我可以幫助你... –