6

タブスワイプビューを実装するために、ViewPager、FragmentPagerAdpater、および3つのフラグメントがあります。ViewPager は、最初のレンダリング後に 3 つのビューを「記憶」することになっていますか?

私の問題は、しばらくすると、3 つのビューのレイアウトが「忘れられる」ことです。つまり、それらを再度更新する必要があり、ユーザーは更新する前に醜い部分を見ることになります。

ビューページャーにもビューホルダーパターンはありますか? 既にレンダリングされたビューを維持したり、それらが破壊されないようにするために、どのような手法を使用できますか?

4

2 に答える 2

14

を使用ViewPager setOffscreenPageLimit()して、スクロールされる前にメモリに保持され、事前に作成されるページ数を制御できます。デフォルトの値は 1 で、現在のページとその直前と直後のページをメモリに保持することを意味します。ページ サイズ (全画面または部分画面) に応じて、たとえば 2 に増やすと、ページが画面上に構築されなくなります。

于 2012-09-11T10:52:54.210 に答える
2

タブアダプタで、destroyItem()メソッドをオーバーライドし、スーパーステートメントを引用します

これにより、フラグメントのインスタンスが保存され、フラグメントを何度もロードする必要がなくなります。

@Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        // TODO Auto-generated method stub
        // super.destroyItem(container, position, object);
    }

このようなもの。

于 2012-09-11T10:47:36.930 に答える