Android编程权威指南——ViewPager

Android编程权威指南——ViewPager

  • 创建 CrimePagerActivity

CrimePagerActivity是AppCompatActivity的子类。在Criminallntent应用中,其任务是创建并管理ViewPager。
以AppCompatActivity为超类,创建CrimePagerActivity新类并为其配置视图,如下代码所示。
创建ViewPager(CrimePagerActivity.java)
public class CrimePagerActivity extends AppCompatActivity {

@0verride

protected void onCreate(BundLe savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R. Layout.activity_crime_pager);
}

在res/layout/目录下创建名为activity_crime_pager的布局文件。注意,必须使用ViewPager的完整包名(android.support.v4.view.ViewPager)。

  1. ViewPager 与 PagerAdapter

在CrimePagerActivity中,设置ViewPager的pager adapter,并实现它的getCount()方法和getItem(int)方法,如代码所示。
设置pager adapter(CrimePagerActivity.java)

public class CrimePagerActivity extends AppCompatActivity {

private ViewPager mViewPager;
private List mCrimes;
@0verride

protected void onCreate(BundLe savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_crime_pager);

mViewPager=(ViewPager)findViewById(R.id.crime_view_pager);
mCrimes = CrimeLab.get(this).getCrimes();
FragmentManager fragmentManager = getSupportFragmentManager();
mViewPager.setAdapter(new FragmentStatePagerAdapter(fragmentManager){

@0verride

pubLic Fragment getItem(int position){


Crime crime = mCrimes.get(position);
return CrimeFragment.newInstance(crime.getId());



@Override


pubLic int getCount() {



return mCrimes.size( );});



}

  1. 整合并配置使用 CrimePagerActivity

新增newIntent方法和crime ID的extra常量,如代码所示。
创建newIntent方法(CrimePagerActivity.java)

public class CrimePagerActivity extends AppCompatActivity {


private static final String EXTRA_CRIME_ID =
"com.bignerdranch.android.criminalintent.crime_id";

 private ViewPager mViewPager;

 private List mCrimes;


 public static Intent newIntent(Context packageContext,UID crimeId){
Intent intent = new Intent(packageContext,CrimePagerActivity.cLass);

 intent.putExtra(EXTRA_CRIME_ID,crimeId);

 return intent;
@0verride
protected void onCreate(Bundle savedInstanceState){


 super.onCreate(savedInstanceState);


 setContentView(R.layout.activity_crime_pager);

 uID crimeId = (UUID) getIntent()
.getSerializableExtra(EXTRA_CRIME_ID);
回到CrimeListFragmentjava文件,修改CrimeHoLder.onCLick(View)方法以启动Crime- PagerActivity,如代码所示。
配置启动CrimePagerActivity(CrimeListFragment.java)

private class CrimeHolder extends RecyclerView.ViewHoLder
implements View.0nClickListener {

@0verride

public void onCLick(View view) {


Intent-intent-=-CFimeActivity-newIntent(getActivity(),mCrime-getId() Intent intent= CrimePagerActivity.newIntent(getActivity()

,mCrime.getId()); startActivity(intent);

最后,要让操作系统启动CrimePagerActivity,还要在manifest配置文件中添加它,如代码所示。打开AndroidManifest.xml,添加CrimePagerActivity声明,同时删除不再使用的CrimeActivity声明;也可以直接将CrimeActivity重命名为CrimePagerActivity。

添加CrimePagerActivity到manifest配置文件

(AndroidManifest.xml)
<manifest …>


…


<appLication …>


<activity
android;name=". CrimeAetivity"

android:name=".CrimePagerActivity">



从项目工具窗口中删除CrimeActivityjava文件,让项目代码更干净。
运行Criminalntent应用。查看明细。
在CrimePagerActivity.onCreate(BundLe)方法的末尾,循环检查crime的ID,找到所选 crime在数组中的索引位置。如果Crime实例的mId与intentextra的crimeId相匹配,设置显示指定位置的列表项,如代码所示。
设置初始分页显示项(CrimePagerActivity.java)

public class CrimePagerActivity extends AppCompatActivity {

@0verride


protected void onCreate(BundLe savedInstanceState){



FragmentManager fragmentManager = getSupportFragmentManager();



mViewPager.setAdapter(new FragmentStatePagerAdapter(fragmentManager){});




for (int i = 0;



i <mCrimes.size(); i++){




if(mCrimes.get(i).getId().equaLs(crimeId)){




mViewPager.setCurrentItem(i); break;}



}



}



}
运行CriminalIntent应用。选择任意列表项,其对应的Crime明细应该能够显示了。现在, ViewPager的使用配置已完成,可以投入使用了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值