標籤:java 資料 alt and out log tco 適配器 圖例
近期看新聞發現新聞的頁面是能夠左右滑動的。於是自己就好奇起來了,之前做過ViewPager展示圖片,在想怎麼載入頁面呢?研究了一下。發現就是加入了Fragment,廢話不多說,揭秘奧秘的時候到了。
使用過ViewPager小夥伴們都知道,Viewpager載入資料。須要資料來源,這裡我們定義4個Fragment。
為了方便其它同事使用,我給這4個Fragment加入了一個基類。詳細代碼例如以下:
public abstract class BaseFragment extends Fragment { public Context mContext;//上下文 private View mView; @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); initData(savedInstanceState); } @Override public void onCreate(Bundle savedInstanceState) { mContext = getActivity(); super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { mView = initView(inflater); return mView; } /** * 初始化介面 */ public abstract View initView(LayoutInflater inflater); /** * 初始化資料 */ public abstract void initData(Bundle savedInstanceState);}
裡面我加入了2個方法,一個是初始化介面。一個初始化資料,這樣其它Fragment繼承該類實現其兩種方法,我們看一下當中一個Fragment裡面的代碼:
public class WeiFragment extends BaseFragment { @Override public View initView(LayoutInflater inflater) { //加入頁面配置 View view = inflater.inflate(R.layout.fragment_weixin, null); return view; } @Override public void initData(Bundle savedInstanceState) { }}
這樣其它同事就知道該怎樣處理資料了。在首頁面。我們僅僅要做兩件事。一是把資料給Viewpager,還有一件事則是要使以下的tab能夠控制頁面變化。以下是傳遞資料的代碼:
//加入資料 list = new ArrayList<BaseFragment>(); list.add(new WeChatFragment()); list.add(new FriendFragment()); list.add(new AddressFragment()); list.add(new SettingFragment());
然後我們須要給ViewPager綁定一個適配器。針對Fragment的adapter,Google提供了專用的FragmentPagerAdapter。詳細代碼例如以下:
public class FragmentAdapter extends FragmentPagerAdapter { private List<BaseFragment> list; public FragmentAdapter(FragmentManager fm, List<BaseFragment> list) { super(fm); this.list = list; } //得到資料 @Override public Fragment getItem(int position) { return list.get(position); } @Override public int getCount() { return list.size(); }}
最後我們要把適配器綁定到ViewPager上面;
//綁定適配器 adapter = new FragmentAdapter(getFragmentManager(), list); mViewPager.setAdapter(adapter);
第二件事就是處理tab改變頁面變化。這裡我們給tab設定了編號,依據編號來處理tab顯示頁面的問題,這裡就不貼代碼了,詳細請看demo。
例如以下:
項目原始碼
如有疑問,能夠給我留言。多多交流。謝謝!
Android之實現ViewPager+Fragment左右滑動