我有ViewPager
一个正在PageAdapter
加载的ImageViews
。显示的图像来自互联网,我使用 AsyncTask 加载Bitmap
然后(如果页面没有被破坏)将其分配给 ImageView。
@Override
public Object instantiateItem(ViewGroup container, int position) {
ImageView img = new ImageView(container.getContext());
new LoadImageTask(img,Data.getImageUrL(position)).execute();
container.addView(img );
return img;
}
所以它ImageView
有两种状态:加载或加载。我需要跟踪用户是否等待图像。所以我在LoadImageTask
onPostExecute实现了这个:
if (loadListener != null) {
loadListener.onImageLoaded(position);
}
在听众中:
public void onImageLoaded(int position) {
if (position == mViewPager.getCurrentItem()) {
// Save record ..
}
}
因为我只需要计算在“ViewPager 的当前项目”中显示的图像,这个方法是不够的,因为如果用户移动到项目 5,例如,ViewPager
缓存中的加载项目 6。如果用户等待足够的时间此加载(将第 5 项作为当前项)对 onImageLoaded 的回调丢失(因为此时第 6 项不是 currentItem,然后当用户移动到第 6 项时,我无法知道图像是否是加载与否。
我正在考虑添加类似[[PSEUDOCODE]]的内容:
mViewPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
if (mViewPager.isLoaded(posistion)){
// Save record ...
}
}
但是我现在不知道如何检索相应的视图是否加载了图像。我该怎么做?