我有一個ViewPager和一個PagerAdapter,它從遠程服務器(通過它們的id)下載一些圖像並顯示出來。它幾乎完美地工作,除了從第一頁滑到第二頁時,它有點慢(如1秒),而之後的所有其他轉換都是正常的。這不是網絡問題,因爲即使在刷卡之前等待了很多,問題仍然存在。 任何想法爲什麼發生這種情況?PagerAdapter在第一次轉換時變慢
這裏是我的代碼:
public class SliderAdapter extends PagerAdapter{
private SliderActivity activity;
private long[] imageIds;
private LayoutInflater inflater;
private List<Bitmap> images = new ArrayList<Bitmap>();
public SliderAdapter(Activity activity,
long[] imageIds) {
this.activity = (SliderActivity) activity;
this.imageIds = imageIds;
for (int i=0; i<imageIds.length; i++){
new GetImageTask(imageIds[i]).execute();
}
}
@Override
public int getCount() {
return imageIds.length;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((View) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
ImageView imgDisplay;
inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View viewLayout = inflater.inflate(R.layout.layout_fullscreen_image, container,
false);
imgDisplay = (ImageView) viewLayout.findViewById(R.id.imgDisplay);
if (images.size()-1 >= position && images.get(position) != null)
imgDisplay.setImageBitmap(images.get(position));
((ViewPager) container).addView(viewLayout);
return viewLayout;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager) container).removeView((RelativeLayout) object);
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
private class GetImageTask extends AsyncTask<Void, Void, Bitmap> {
private final String LOG_TAG = GetImageTask.class.getName();
private Long id;
public GetImageTask(Long id) {
super();
this.id = id;
}
@Override
protected Bitmap doInBackground(Void... params) {
//Download image code
}
@Override
protected void onPostExecute(Bitmap imgBmp) {
if (imgBmp!=null) {
images.add(imgBmp);
activity.adapter.notifyDataSetChanged();
}
}
}
}
你的意思是加載第二頁需要時間,其餘頁面加載好嗎? – 2014-09-26 20:14:46
是的。假設有3張圖片。 1-> 2是緩慢的,則2-> 3,3-> 2,2-> 1,1-> 2完美地工作。 – splinter123 2014-09-26 20:45:23
這就好像第二頁「沒有準備好」,當我滑過它。我也嘗試切換到FragmentPagerAdapter並將圖片分成不同的片段,但仍然存在相同的問題。 – splinter123 2014-09-27 00:07:39