最近看到一篇微信文章,講的是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+動態設置背景圖片就可以了。