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には 2 つの状態があります: ロード中またはロード済みです。ユーザーが画像を待っているかどうかを追跡する必要があります。だから私は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