《Android开发权威指南》(第三版)第十一章挑战练习
2018-03-09 20:18
295 查看
直接上代码:
注:1、在布局文件中,如果先定义ViewPager,再定义按钮的话,按钮会加载不出来。所以我把两个按钮定义在了顶部。如果有小伙伴知道怎么在ViewPager底下定义按钮的话,欢迎指点。2、在左右滑动的时候,FragmentStatePaperAdapter对于刚刚划走的Fragment好像是不会彻底销毁的,所以,从Item0->Item1->Item0时,JUMP TO THE First按钮并不会失效,参考链接:http://blog.csdn.net/fangkailong/article/details/38298893
//Activity代码 import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentStatePagerAdapter; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; import android.widget.Button; import java.util.List; import java.util.UUID; public class SecretPagerActivity extends AppCompatActivity { private ViewPager mViewPager; private List<Secret> mSecrets; private Button mToFirst; private Button mToLast; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_secret_pager); mViewPager = findViewById(R.id.activity_secret_pager_view_pager); mToFirst=findViewById(R.id.bt_tofirst); mToLast=findViewById(R.id.bt_tolast); mToLast.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { mViewPager.setCurrentItem(99); } }); mToFirst.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { mViewPager.setCurrentItem(0); } }); mSecrets = SecretLab.get(this).getSecrets(); UUID uuid = (UUID) getIntent().getSerializableExtra("uuid"); FragmentManager fm = getSupportFragmentManager(); mViewPager.setAdapter(new FragmentStatePagerAdapter(fm) { @Override public Fragment getItem(int position) { Secret secret = mSecrets.get(position); Log.e("CurrentItem==>",mViewPager.getCurrentItem()+""); if(mViewPager.getCurrentItem()==0){ mToFirst.setEnabled(false); } else{ mToFirst.setEnabled(true); if(mViewPager.getCurrentItem()==99){ mToLast.setEnabled(false); } else{ mToLast.setEnabled(true); } } return SecretFragment.newInstance(secret.getNum()); } @Override public int getCount() { return mSecrets.size(); } }); int cnt = mSecrets.size(); for (int i = 0; i < cnt; i++) { if (mSecrets.get(i).getNum().equals(uuid)) { mViewPager.setCurrentItem(i); break; } } } public static Intent newIntent(Context context, UUID secret_id) { Intent intent = new Intent(context, SecretPagerActivity.class); intent.putExtra("uuid", secret_id); return intent; } }
<!--布局文件代码--> <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="match_parent" android:layout_width="match_parent" android:orientation="vertical"> <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/bt_tofirst" android:text="JUMP TO THE FIRST"/> <Button android:id="@+id/bt_tolast" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right|bottom" android:text="JUMP TO LAST" /> </FrameLayout> <LinearLayout android:layout_height="wrap_content" android:layout_width="wrap_content" android:orientation="vertical"> <android.support.v4.view.ViewPager android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/activity_secret_pager_view_pager"> </android.support.v4.view.ViewPager> </LinearLayout> </LinearLayout>
注:1、在布局文件中,如果先定义ViewPager,再定义按钮的话,按钮会加载不出来。所以我把两个按钮定义在了顶部。如果有小伙伴知道怎么在ViewPager底下定义按钮的话,欢迎指点。2、在左右滑动的时候,FragmentStatePaperAdapter对于刚刚划走的Fragment好像是不会彻底销毁的,所以,从Item0->Item1->Item0时,JUMP TO THE First按钮并不会失效,参考链接:http://blog.csdn.net/fangkailong/article/details/38298893
相关文章推荐
- 《Android编程权威指南(第三版)》第十一章挑战练习Demo
- 《Android编程权威指南(第三版)》第三章挑战练习Demo
- 《Android编程权威指南(第三版)》第九章挑战练习Demo
- 《Android编程权威指南(第三版)》第八章挑战练习Demo
- 《Android编程权威指南(第三版)》第五章挑战练习Demo
- Android编程权威指南第三版挑战练习一
- Android编程权威指南(第三版)挑战练习五
- 《Android编程权威指南(第三版)》第十章挑战练习Demo
- 《Android编程权威指南(第三版)》第十二章挑战练习Demo上
- 记录——《C Primer Plus (第五版)》第十一章编程练习第四题
- Android编程权威指南(第2版)—第8章挑战练习
- 第十一章编程练习(2)
- Java-Java编程思想第四版 第十一章 练习
- 第十一章 11.2.2节练习
- c primer plus编程练习第十一章(纯手打欢迎指错)
- 《汇编语言》(第三版)王爽第十一章实验11个人方法记录
- 第32周-鸟哥的Linux私房菜基础篇第三版-第十一章 认识与学习BASH
- 深入理解计算机系统(第三版) 练习2.13
- 深入理解计算机系统(第三版) 练习2.15
- C primer plus 第十一章 练习3: