【Android介面實現】FragmentPagerAdapter與FragmentStatePagerAdapter使用詳解與區別,pageradapter詳解

來源:互聯網
上載者:User

【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 ,點到為止!
 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.