ViewPagerコンポーネント

4215 ワード

ViewPagerは、現在の画面のリスト項目と左右の隣接ページのデータをデフォルトでロードするので、setOffScreenPageLimit(int)メソッドを使用して、隣接ページのプリロード数をカスタマイズすることもできます.
ViewPagerを使用したレイアウトファイル
.support.v4.view.ViewPager
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/activity_crime_view_pager"
    android:layout_height="match_parent"
    android:layout_width="match_parent">

.support.v4.view.ViewPager>

ViewPagerクラスはサポートライブラリから来ており、レイアウトに追加するときはフルネームandroidを使用します.support.v4.view.ViewPager
FragmentStatePagerAdapter
FragmentManager fragmentManager=getSupportFragmentManager();
        mViewPager.setAdapter(new FragmentStatePagerAdapter(fragmentManager){
            @Override
            public Fragment getItem(int position){
                Crime crime=mCrimes.get(position);
                return CrimeFragment.newInstance(crime.getId());
            }
            @Override
            public int getCount(){
                return mCrimes.size();
            }
        });

ViewPagerにはPagerAdapterのサポートが必要であり、両者の関係は非常に複雑であるが、PagerAdapterのサブクラスFragmentStatePagerAdapterを利用すると、多くのサブクラスが2つの方法getCountを実現する必要があることを簡略化することができる.getItem(int)[構成済みのCrimeFragmentに戻って明示的なタスクを完了する]
指定項目の表示
UUID crimeId=(UUID)getIntent().getSerializableExtra(EXTRA_CRIME_ID);

        for(int i=0;i
        {
            if(mCrimes.get(i).getId().equals(crimeId)){
                mViewPager.setCurrentItem(i);
                break;
            }
        }

ViewPagerのデフォルトでは、PagerAdapterの最初のリスト項目のみが表示されます.setCurrentItem(int)指定項目を表示させる
FragmentPagerAdapterは別の利用可能なPagerAdapterである.FragmentStatePagerAdapterとの違いは、不要になったfragmentをアンインストールする際の処理方法が異なることである.詳細ビューの内容が多くページ分けで表示する必要がある場合、activityごとに通常2、3つのfragmentしか管理されていません.メモリの問題を心配する必要はありません.2、FragmentStatePagerAdapterは不要なfragmentを破棄します.onSaveInstanceStateメソッドで情報を保存できます.ユーザーが戻ってきたときに保存したインスタンスの状態を切り替えると、新しいfragmentの生成を復元できます.これにより、メモリを節約できます.
ViewPagerがfragment以外のビューを管理する必要がある場合、元のPagerAdapterインタフェースを実現する必要があります.たとえば、管理ピクチャがPagerAdapterインタフェースを実現するには、ViewPager-PagerAdapterとRecyclerView-Adapterのそれぞれの関係の異同PagerAdapterがビューに戻るonBindViewHolderメソッドを使用しないことを理解する必要があります.次の方法を使用します.
public Object instantiateItem(ViewGroup container,int position)
public void destroyItem(ViewGroup container,int position,Object object)
public abstract boolean isViewFromObject(View view,Object object)

方法1:指定した場所のリストアイテムビューを作成し、ViewGroupビューコンテナに追加します.すぐにビューを作成する必要はありません.PagerAdapterは、ビューメソッドを作成するタイミングを自分で決定します.2:作成したビューを破棄します.