3

我有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 ...
             }
        }

但是我现在不知道如何检索相应的视图是否加载了图像。我该怎么做?

4

0 回答 0