【Android介面實現】FragmentPagerAdapter與FragmentStatePagerAdapter使用詳解與區別,pageradapter詳解
轉載請註明出處:http://blog.csdn.net/zhaokaiqiang1992
FragmentPagerAdapter是android-support-v4支援包裡面出現的一個新的適配器,繼承自PagerAdapter,是專門用來給支援包中出現的ViewPager進行資料適配的。
PagerAdapter在之前的文章中進行過簡單的介紹,不記得怎麼使用的可以先去看一下。
FragmentPagerAdapter,見名知意,這個適配器就是用來實現Fragment在ViewPager裡面進行滑動切換的,因此,如果我們想實現Fragment的左右滑動,可以選擇ViewPager和FragmentPagerAdapter實現。
FragmentPagerAdapter擁有自己的緩衝策略,當和ViewPager配合使用的時候,會緩衝當前Fragment以及左邊一個、右邊一個,一共三個Fragment對象。
假如有三個Fragment,那麼在ViewPager初始化之後,3個fragment都會載入完成,中間的Fragment在整個生命週期裡面只會載入一次,當最左邊的Fragment處於顯示狀態,最右邊的Fragment由於超出緩衝範圍,會被銷毀,當再次滑到中間的Fragment的時候,最右邊的Fragment會被再次初始化。
在目前的版本來說,最適合用來做固定的較少數量的場合,比如說一個有3個tab標籤的fragment滑動介面。FragmentPagerAdapter會對我們瀏覽過Fragment進行緩衝,儲存這些介面的臨時狀態,這樣當我們左右滑動的時候,介面切換更加的流暢。但是,這樣也會增加程式佔用的記憶體。如果應用情境是更多的Fragment,請使用FragmentStatePagerAdapter。
當我們使用FragmentPagerAdapter的時候,它的宿主ViewPager必須有一個id。
如果要使用FragmentPagerAdapter,我們需要實現2個方法,如下所示。
FragmentPagerAdapter adapter = new FragmentPagerAdapter(getSupportFragmentManager()) {@Overridepublic int getCount() {return fragments.size();}@Overridepublic Fragment getItem(int position) {return fragments.get(position);}}};
getCount()返回的是ViewPager頁面的數量,getItem()返回的是要顯示的fragent對象。
除了FragmentPagerAdapter之外,還有一個類也是專門實現ViewPager的Fragment的資料適配的,叫做FragmentStatePagerAdapter。
FragmentStatePagerAdapter是PagerAdapter的子類,這個適配器對實現多個Fragment介面的滑動是非常有用的,它的工作方式和listview是非常相似的。當Fragment對使用者不可見的時候,整個Fragment會被銷毀,只會儲存Fragment的儲存狀態。基於這樣的特性,FragmentStatePagerAdapter比FragmentPagerAdapter更適合用於很多介面之間的轉換,而且消耗更少的記憶體資源。
同樣的,宿主VIewPager也必須有一個id。
如果要使用FragmentStatePagerAdapter,我們需要實現2個方法,getCount()返回的是ViewPager頁面的數量,getItem()返回的是要顯示的fragent對象。使用方法和FragmentPagerAdapter完全一樣。
在v13appFragmentPagerAdapter與appFragment衝突問題
那你就匯入v4.app.FragmentPagerAdapter好了。
android用fragment等實現介面不同按鈕對應不同布局?
ViewPager ,點到為止!