ViewPager(2):ViewPager与Fragment一起使用
来源:互联网 发布:sqlserver数据库迁移 编辑:程序博客网 时间:2024/06/06 14:14
FragmentPagerAdapter
FragmentPagerAdapter继承自PagerAdapter ,主要用来展示多个Fragment页面,并且每一个Fragment都会被保存在FragmentManager中。 FragmentPagerAdapter最适用于那种少量且相对静态的页面。对于较多的页面集合,更推荐使用FragmentStatePagerAdapter。 FragmentPagerAdapter的派生类只需要实现getItem()
和getCount()
即可。
FragmentStatePagerAdapter
FragmentStatePagerAdapter继承自PagerAdapter,主要使用Fragment来管理每个页面。这个类同样用来保存和恢复fragment页面的状态。 FragmentStatePagerAdapter更多用于大量页面,例如视图列表。当某个页面对用户不再可见时,他们的整个fragment就会被销毁,仅保留fragment状态。相比于FragmentPagerAdapter,这样做的好处是在访问各个页面时能节约大量的内存开销,但代价是在页面切换时会增加非常多的开销。 当使用FragmentStatePagerAdapter的时候对应的ViewPager必须拥有一个有效的ID集。 FragmentStatePagerAdapter的派生类也只需要实现getItem()
和getCount()
即可。
注意:如果要使用FragmentPagerAdapter或FragmentStatePagerAdapter的话,自定义Activity必须继承FragmentActivity。
实例演示
视觉效果:
具体实现:
Fragment的布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerInParent="true" android:gravity="center" android:text="Page1" android:textSize="30sp"/></RelativeLayout>
这里只展示一个其它类似。
自定义Fragment
public class Fragment1 extends Fragment { @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { return inflater.inflate(R.layout.page1, null); }}
这里也只展示一个其它类似。
自定义Adapter
public class MyFragmentAdapter extends FragmentPagerAdapter { private List<Fragment> fragmentList; //需要同时获取FragmentManager和数据 public MyFragmentAdapter(FragmentManager fm, List<Fragment> fragmentList) { super(fm); this.fragmentList = fragmentList; } //获取Item的数据,也就是Fragment @Override public Fragment getItem(int position) { return fragmentList.get(position); } //ViewPager的Item数目 @Override public int getCount() { return fragmentList.size(); }}
自定义Activity
public class MainActivity extends AppCompatActivity { private List<Fragment> fragmentList; private ViewPager mViewPager; private MyFragmentAdapter myFragmentAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //准备数据 Fragment1 mFragment1 = new Fragment1(); Fragment2 mFragment2 = new Fragment2(); Fragment3 mFragment3 = new Fragment3(); Fragment4 mFragment4 = new Fragment4(); fragmentList = new ArrayList<Fragment>(); fragmentList.add(mFragment1); fragmentList.add(mFragment2); fragmentList.add(mFragment3); fragmentList.add(mFragment4); //获取ViewPager mViewPager = (ViewPager) findViewById(R.id.mViewPager); //将数据与ViewPager通过适配器连接在一起 myFragmentAdapter = new MyFragmentAdapter(getSupportFragmentManager(),fragmentList); mViewPager.setAdapter(myFragmentAdapter); }}
- ViewPager(2):ViewPager与Fragment一起使用
- ViewPager与support包里的Fragment家族一起使用
- viewpager和fragment的一起使用
- ViewPager与Fragment结合使用
- Fragment与ViewPager的使用
- 解决fragment与viewpager一起使用时fragment中的listview数据出现重复
- 2、ViewPager+Fragment的使用
- ViewPager的使用(三)-viewPager与Fragment配合使用
- Frament+ViewPager一起使用
- ViewPager与fragment配合使用的优势
- Android:Fragment 与 ViewPager的配合使用
- Androi fragment与viewPager的使用
- ViewPager与Fragment结合的简单使用
- 多层Fragment与ViewPager结合使用
- ViewPager与fragment的集合使用
- viewpager与fragment使用时刷新问题
- 组件使用之Fragment与ViewPager
- android fragment与ViewPager
- 比SharedPrefereces更强大的缓存工具类
- JSON 数据格式
- warning: Missing file: XXX is missing from working copy 警告错误解决
- 我的第一篇文章
- xshell端口转发,plsql连接远程oracle
- ViewPager(2):ViewPager与Fragment一起使用
- android容联云IM初始化介绍及简单登陆修改
- Could not connect: Connection using old (pre-4.1.1) authentication protocol
- 实战录 | 基于redis的分布式HA调度器解决方案
- Auto property synthesis will not synthesize property ‘delegate’;it will be implemented by its superc
- android之Intent的七大属性
- C++第三次作业
- ccah-500 第42题 want to set and enforce a block size of 128MB for all new files written to the cluster
- C# 程序员最常犯的 10 个错误