ViewPager的使用
1. 为UI添加 ViewPager
后,用户可以左右滑动屏幕,切换查看不同列表的明细页面
效果图如下,使用ViewPager可以增强用户友好体验

2.我们需要完成以下任务
- 创建CrimePagerActivity类
- 定义包含ViewPager的视图层级结构
- 在新建的类中关联使用ViewPager及其他Adapter
- 修改CrimeHolder.onClick()方法
3.
<android.support.v4.view.ViewPager
xmlns:andro
android:
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v4.view.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;
}
}
}