ページ アダプターを使用して水平方向のスワイプを実装しています。OffscreenPageLimit をゼロに設定したいのは、画面上のビューのみが読み込まれるようにするためです。しかし、残念ながら機能していません。
ありがとうございました
ページ アダプターを使用して水平方向のスワイプを実装しています。OffscreenPageLimit をゼロに設定したいのは、画面上のビューのみが読み込まれるようにするためです。しかし、残念ながら機能していません。
ありがとうございました
を使用している場合、FragmentPageAdapter
目的を達成するのはそれほど難しいことではありません。フラグメントが作成されるたびに(またはその親アクティビティ、または添付など)「ロード」*しないようにする必要があります。代わりに、読み込みプロセスを開始するために呼び出すことができるメソッドをフラグメントに作成します。その後、OnPageChangeListener
for を設定し、ViewPager
その 'startLoad' メソッドをonPageScrolled(...)
またはonPageSelected(...)
- ニーズに適した方で呼び出します。
そうすれば、アダプタに複数のアイテムを保持したまま、画面外のページを非常に単純なレイアウトで初期化できます。ページがスクロールされたときにのみ、ハードワークを開始できます。
*= 「ロード」という言葉は、ここではあいまいな用語であることに注意してください。1ページだけのアダプターを持つことは、実際には意味がありません(@fliesplがすでに指摘しているように)。代わりに、上で説明したように、複数のページを許可し、見えないものはすべて非常に基本的な状態に初期化します。水平スクロールによってページ (の一部) が表示されたら、コンテンツの実際の読み込みを開始するだけです。
ヒント: 「startLoad」メソッドを定義するインターフェースをセットアップすることは、おそらく悪い考えではありません。正しく設定すれば、実際の実装について心配することなく、アダプター内のアイテムを安全にキャストしてロードを開始できるはずです。
詳しく見てみると、logcat は次の文字列を出力します:
Requested offscreen page limit 0 too small; defaulting to 1
。つまり、この方法では実行できません :)
アダプターが必要ない場合、なぜそれを使用するのですか? レイアウトを膨らませて置き換えるか、新しいアクティビティを開始するだけです。