为ViewPager添加适配器

ViewPager有两个常用的适配器,这两个适配器都继承于PagerAdapter,并将Fragment作为数据源:

  • FragmentPagerAdapter:  这种适配器从始至终保存所有页面的Fragment的实例。当页面形式固定且数量较小的时候,可以选择这种适配器。
  • FragmentStatePagerAdater: 这种适配器只会保存当前、前一个和后一个页面的Fragment。当页面数量较多或者需要动态改变数量时,可以选择。

二者的使用方法是完全相同的,下面以FragmentPagerAdapter说明。

创建Fragment,并为Fragment加载布局

在xml文件中定义Fragment使用的布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:textSize="30sp" />

</RelativeLayout>

创建Fragment,并加载此布局:

public class MyFragment extends Fragment {
	private int num;
	
	public MyFragment(int num){
		this.num = num;
	}

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
		View v = inflater.inflate(R.layout.view_1, container, false);
		TextView textView = (TextView) v.findViewById(R.id.text_view);
		textView.setText("This is the #" + (num + 1) + " view");
		return v;
	}
}

创建适配器

创建一个类继承于FragmentPagerAdapter,重写其中的getItem() 和getCount() 方法。getItem() 方法返回一个Fragment对象作为页面的内容,getCount() 返回页面的个数。

如果设置了选项卡导航栏,还可以重写getPageTitle() 来返回选项卡的标题:

public class MyFragmentPagerAdapter extends FragmentPagerAdapter {

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

	@Override
	public Fragment getItem(int position) {
		return new MyFragment(position);
	}

	@Override
	public int getCount() {
		return 4;
	}
	
	@Override
	public CharSequence getPageTitle(int position) {
		String title = "Tab #" + (position + 1);
		return title;
	}

}

PS: 这里每个页面使用了相同的布局,仅仅是改变了布局中显示的内容。如果每个页面要使用不同的布局,也可以为每一个布局文件创建一个Fragment,并将所有的Fragment保存在一个集合中,然后在getItem方法中返回不同的Fragment对象。

绑定适配器

		adapter1 = new MyFragmentPagerAdapter(getSupportFragmentManager());
		viewPager.setAdapter(adapter1);

MyFragmentPagerAdapter接收一个FragmentManager对象作为构造参数。为了使程序能够兼容,需要让MainActivity继承FragmentActivity,并且使用getSupportFragmentManager() 方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值