私は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 ...
}
}
しかし、現時点で対応するビューが画像をロードしたかどうかを取得する方法がわかりません。どうすればいいですか?