Android Fragment + ViewPager +LazyLoad的應用

最近看到一篇微信文章,講的是ViewPager + Fragment的懶加載。博主以前也遇到過這樣的問題,要在APP啓動的時候判斷從網絡獲取的一個字段,來確定是否隱藏一個列表的item,當時直接在主Activity裏獲取字段,然後設置item顯示狀態,結果發現每次服務器動態改變字段後,APP根本不按照字段來顯示/隱藏item,打log後發現在進入APP的時候,ViewPager的預加載屬性在搗鬼,主Activity裏字段還沒獲取,結果ViewPager第三個頁面就已經加載出來了。後來開線程解決了問題。由於深有體會,所以今天就寫寫ViewPager+Fragment,順便應用LazyLoad,在此感謝原博主尹star。

先曬圖:
這裏寫圖片描述

免積分下載鏈接
http://download.csdn.net/detail/black_dreamer/9579555
ViewPager + Fragment做可點擊、滑動翻頁的介紹資料,在網絡上已經有一大堆了,我就不細說啦,簡單總結下有以下幾點:

  • 佈局上分爲Activity佈局(ViewPager+底部菜單一堆),Fragment佈局(每一個Fragment對應相應的佈局)

  • 創建自定義Fragment類,頁面有幾個就創建幾個,在onCreateView 方法裏從佈局中獲得view並返回

 public View onCreateView(LayoutInflater inflater, 
                             @Nullable ViewGroup container,
                             @Nullable Bundle savedInstanceState) {

        View v = inflater.inflate(R.layout.fragment_home,container,false) ;
        return v ;
    }
  • 創建自定義的Adapter,繼承自FragmentStatePagerAdapter 或者 FragmentPagerAdapter
public class FragmentAdapter extends FragmentStatePagerAdapter  {

    public List<Fragment> mFragments ;

    public FragmentAdapter(FragmentManager fm) {
        super(fm);
    }

    public FragmentAdapter(FragmentManager fm, List<Fragment> fragments) {
        super(fm);
        this.mFragments = fragments;
    }

    @Override
    public Fragment getItem(int position) {
        return mFragments.get(position);
    }

    @Override
    public int getCount() {
        return mFragments.size();
    }
}
  • 在Activity中實例化自定義的幾個Fragment類,並添加到List中,用List創建並初始化自定義的Adapter,然後用ViewPager的setAdapter方法去設置就可以了。
  • 底部菜單的點擊選中,可以通過ViewPager.setCurrentItem 方法去設置ViewPager當前選中的頁面,按鈕顯示效果嘛,就用selector+動態設置背景圖片就可以了。

下載鏈接:http://download.csdn.net/detail/black_dreamer/9579555

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章