ViewPager的使用

ViewPager的使用

1. 为UI添加 ViewPager后,用户可以左右滑动屏幕,切换查看不同列表的明细页面

效果图如下,使用ViewPager可以增强用户友好体验

2.我们需要完成以下任务

  • 创建CrimePagerActivity类
  • 定义包含ViewPager的视图层级结构
  • 在新建的类中关联使用ViewPager及其他Adapter
  • 修改CrimeHolder.onClick()方法

3.

  • 增加的布局文件,此处使用的支持库版本的
<android.support.v4.view.ViewPager
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/activity_crime_view_pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
</android.support.v4.view.ViewPager>
  • 对应的ViewPager类
    @Override
    protected void onCreate(Bundle savedInstanceState){

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_crime_pager);
    }
  • 设置pager Adapter(在开头所创建的类里面写代码)
   //添加以下代码
    private ViewPager mViewPager;
    private List<Crime> mCrimes;
	@Override
	protected void onCreate(Bundle savedInstanceState){
        //添加以下代码
		mViewPager = (ViewPager) findViewById(R.id.activity_crime_view_pager);
			mCrimes=CrimeLab.get(this).getCrimes();
			FragmentManager fragmentManager = getSupportFragmentManager();
			mViewPager.setAdapter(new FragmentStatePagerAdapter(fragmentManager) {
				@Override
				public Fragment getItem(int position) {
					Crime crime=mCrimes.get(position);
					return CrimeFragment.newInstance(crime.getId());
				}
				@Override
				public int getCount(){
					return mCrimes.size();
				}
			});
	}
  • 整合并配置 我们放弃了之前的普通的代码 所以要把之前的代码加到新的里面
    private static final String EXTRA_CRIME_ID = "com.bignerdranch.android.criminalintent.crime_id";
    private ViewPager mViewPager;//上一个所加代码
    private List<Crime> mCrimes;//上一个所加代码

    public static Intent newIntent(Context packageContext, UUID crimeId){
        Intent intent = new Intent(packageContext,CrimePagerActivity.class);
        intent.putExtra(EXTRA_CRIME_ID,crimeId);
        return intent;
    }
    @Override
	protected void onCreate(Bundle savedInstanceState){

		UUID crimeId=(UUID) getIntent().getSerializableExtra(EXTRA_CRIME_ID);
	}
  • 最后一个,设置初始分页显示项
   
    protected void onCreate(Bundle savedInstanceState){
        //我们在onCrete方法里面添加
    	for(int i=0;i<mCrimes.size();i++){
                if(mCrimes.get(i).getId().equals(crimeId)){
                    mViewPager.setCurrentItem(i);
                    break;
                }
            }
	}
原文地址:https://www.cnblogs.com/ljl696/p/7607680.html