ViewPager导航

1.加载显示的页卡

将Layout布局转换成View对象

(1) LayoutInflater inflater=LayoutInflater.from(this);

         inflater.inflate(resource,root);

(2) View.inflate(context,resource,root);

2.配置Adapter

(1) PagerAdapter 数据源 List<View>

(2) FragmentPagerAdapter 数据源:List<Fragment>

(3) FragmentStatePagerAdapter 数据源:List<Fragment>

ViewPager

<android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
 </android.support.v4.view.ViewPager>

PagerTabStrip

  <android.support.v4.view.PagerTabStrip
         android:id="@+id/titlelist"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
       >

  </android.support.v4.view.PagerTabStrip>

PagerTitleStrip

 <android.support.v4.view.PagerTitleStrip
         android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        </android.support.v4.view.PagerTitleStrip>

PagerTabStrip与PagerTitleStrip的异同:

PagerTabStrip有下划线和当前选中选项的下划线,PagerTitleStrip没有下划线

注意:PagerTabStrip和PagerTitleStrip不能同时使用,同时使用时上面使用的对象功能会失效

PagerTabStrip和PagerTitleStrip是ViewPager的子标签,使用时嵌套在ViewPager里面,在Adapter中重写getPageTitle方法实例化标题

package com.example.pageradapter;

import java.util.List;

import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;

public class MyAdapter extends PagerAdapter {
	private List<View> viewlist;
	private List<String> titles;
	
	public MyAdapter(List<View> viewlist,List<String> titles){
		this.viewlist=viewlist;
		this.titles=titles;
	}
    /**
     * 返回页卡数量
     */
	@Override
	public int getCount() {
		return viewlist.size();
	}
   /**
    * View是否来自于对象
    */
	@Override
	public boolean isViewFromObject(View arg0, Object arg1) {
		return arg0==arg1;
	}
    /**
     *销毁一个页卡  
    */
	@Override
	public void destroyItem(ViewGroup container, int position, Object object) {
		container.removeView(viewlist.get(position));
	}
    /**
     * 实例化一个页卡
     */
	@Override
	public Object instantiateItem(ViewGroup container, int position) {
		container.addView(viewlist.get(position));
		return viewlist.get(position);
	}
	/**
	 * 获取ViewPager页卡标题
	 */
    @Override
    public CharSequence getPageTitle(int position) {
    	return titles.get(position);
    }
}
package com.example.pageradapter;

import java.util.List;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

public class MyFragmentPagerAdapter extends FragmentPagerAdapter {
    private List<Fragment> fragment;
    private List<String>title;
	public MyFragmentPagerAdapter(FragmentManager fm,List<Fragment> fragment,List<String>title) {
		super(fm);
		this.fragment=fragment;
		this.title=title;
	}

	@Override
	public Fragment getItem(int arg0) {
		return fragment.get(arg0);
	}

	@Override
	public int getCount() {
		return fragment.size();
	}
     @Override
    public CharSequence getPageTitle(int position) {
    	return title.get(position);
    }
}


package com.example.pageradapter;

import java.util.List;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.view.ViewGroup;

public class MyFragmentStatePagerAdapter extends FragmentStatePagerAdapter {
    private List<Fragment> fragment;
	private List<String>title;
	public MyFragmentStatePagerAdapter(FragmentManager fm,List<Fragment> fragment,List<String>title) {
		super(fm);
		this.fragment=fragment;
		this.title=title;
	}

	@Override
	public Fragment getItem(int arg0) {
		return fragment.get(arg0);
	}

	@Override
	public int getCount() {
		return fragment.size();
	}

	@Override
	public void destroyItem(ViewGroup container, int position, Object object) {
		super.destroyItem(container, position, object);
	}

	@Override
	public Object instantiateItem(ViewGroup arg0, int arg1) {
		return super.instantiateItem(arg0, arg1);
	}
	   @Override
	public CharSequence getPageTitle(int position) {
		return title.get(position);
	}
}


PagerAdapter、FragmentPagerAdapter、FragmentStatePagerAdapter 三者异同

PagerAdapter和FragmentStatePagerAdapter都可以创建和销毁加载的View对象,FragmentPagerAdapter直接加载全部的对象,不会销毁对象

FragmentPagerAdapter主要用于少量界面的ViewPager,会将所有的fragment保存在内存中,不会销毁。而FragmentStatePagerAdapter和ListView有点类似,会保存当前界面,以及下一个界面和上一个界面,最多保存3个,其他会被销毁掉。


代码路径:http://pan.baidu.com/s/1wml5c




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值