了解了與ViewPager
配合使用的PagerAdapter
、FragmentPagerAdapter
和FragmentStatePagerAdapter
后,那么應該使用哪個Adapter?
當ViewPager
展示的單頁面業務邏輯偏少,主要用于展示信息,則只需要使用PagerAdapter
來展示即可。
例如圖片列表的大圖顯示,單頁面都只需要一個ImageView
,而對單項進行操作的業務邏輯都是一致的,只需要放置在Activity
中進行處理即可。
如果ViewPager
展示的單頁面業務邏輯偏多,這時候使用Fragment
來分離業務邏輯,則可以使結構清晰,代碼簡潔,并且提高代碼重用性。
而FragmentPagerAdapter
與FragmentStatePagerAdapter
的差別,主要在于后者內部對于Fragment
進行狀態保存和重用,并且及時回收UI,減少了內存的消耗。
當ViewPager
展示的頁面數量較少或者頁面數據量偏少時,可以使用FragmentPagerAdapter
,并且結合ViewPager
的setOffscreenPageLimit方法,來避免重新創建Fragment
的問題。
而Fragment
數量偏多,或者Fragment
包含較多的數據展示時,使用FragmentStatePagerAdapter
則更為合適。使用FragmentStatePagerAdapter
時,需要注意的是,當Fragment
超出ViewPager
預加載的范圍而被移除時,需要在onSaveInstanceState方法中保存好數據,并且在onCreateView、onViewCreated或onViewStateRestored方法中進行恢復,避免過多的數據讀取操作。