上一篇我们提到PagerAdapter,但是PagerAdapter比较繁琐,我们可以使用另外一个适配器FragmentPagerAdapter,这个适配器更多时候用于少量界面的ViewPager,比如Tab。它的特定是划过的界面会保存早内存中,尽管已经划过,也是这样。
MainActivity.java代码:
public class MainActivity extends FragmentActivity { private ViewPager viewPager; private MyAdapter adapter; // 显示数据 // static final int NUM_ITEMS = 10; private FragmentManager manager; private List<Fragment> list = null; // private FragmentTransaction transaction; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); viewPager = (ViewPager) this.findViewById(R.id.viewPager); manager = getSupportFragmentManager(); list = new ArrayList<Fragment>(); list.add(new Fragment1()); list.add(new Fragment2()); list.add(new Fragment3()); // transaction = manager.beginTransaction(); adapter = new MyAdapter(manager); viewPager.setAdapter(adapter); adapter.notifyDataSetChanged(); } public class MyAdapter extends FragmentPagerAdapter { public MyAdapter(FragmentManager fm) { super(fm); // TODO Auto-generated constructor stub } @Override public Fragment getItem(int position) { // TODO Auto-generated method stub return list.get(position); } @Override public int getCount() { // TODO Auto-generated method stub return list.size(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
Fragment1.java代码:
public class Fragment1 extends Fragment { @Override public void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub View view = inflater.inflate(R.layout.f1, null); return view; } @Override public void onPause() { // TODO Auto-generated method stub super.onPause(); } }
Fragment2.java和Fragment3.java代码类似,就不多说了。
activity_main.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="match_parent" > </android.support.v4.view.ViewPager> </RelativeLayout>
f1.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <RatingBar android:id="@+id/ratingBar1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
f2.xml和f3.xml代码类似!