FragmentPagerAdapter——滑动添加Fragment
2015-09-07 14:11
615 查看
FragmentPagerAdapter是PagerAdapter中的其中一种实现。它将每一个页面表示为一个 Fragment,并且每一个Fragment都将会保存到fragment manager当中。当页面数量比较大的时候,建议使用FragmentStatePagerAdapter。
当使用FragmentPagerAdapter的时候,ViewPager一定要使用正确的ID set。
FragmentPagerAdapter的子类只要实现 getItem(int) 和 getCount()方法
在XML中定义布局,在底部定义一个RadioGroup,添加三个RadioButton。添加一个ViewPager布局。
定义一个Adapter类,继承自FragmentPagerAdapter,重写两个方法
在MainActivity中完善代码,主要是将适配器添加到ViewPager中
这里添加点击事件主要是在点击下边的Button和滑动屏幕的时候保持一致性。
当使用FragmentPagerAdapter的时候,ViewPager一定要使用正确的ID set。
FragmentPagerAdapter的子类只要实现 getItem(int) 和 getCount()方法
在XML中定义布局,在底部定义一个RadioGroup,添加三个RadioButton。添加一个ViewPager布局。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <LinearLayout android:id="@+id/linearlayout" android:layout_width="match_parent" android:layout_height="60dp" android:orientation="horizontal" android:layout_alignParentTop="true" android:background="#17B4EB"> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="30dp" android:background="#cfcfcf" android:layout_marginTop="15dp"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:background="@mipmap/text" android:gravity="center" android:hint="搜索"/> </LinearLayout> <android.support.v4.view.ViewPager class="com.example.administrator.myfragment.fragment.MyFirstFragment" android:id="@+id/fragment_viewpager" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1"></android.support.v4.view.ViewPager> <RadioGroup android:id="@+id/fragment_radiogroup" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:gravity="center" android:orientation="horizontal"> <RadioButton android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawableTop="@drawable/contact" style="@style/fragment"/> <RadioButton android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawableTop="@drawable/conversation" style="@style/fragment" /> <RadioButton android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawableTop="@drawable/plugin" style="@style/fragment"/> </RadioGroup> </LinearLayout>
定义一个Adapter类,继承自FragmentPagerAdapter,重写两个方法
package com.example.administrator.myfragment.adapter; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import java.util.List; /** * Created by Administrator on 2015/9/7. */ public class MyFragmentAdapter extends FragmentPagerAdapter { private List<Fragment>mFragments; public MyFragmentAdapter(FragmentManager fm,List<Fragment> mFragments) { super(fm); this.mFragments=mFragments; } @Override public Fragment getItem(int position) { return mFragments.get(position); } @Override public int getCount() { return mFragments.size(); } }
在MainActivity中完善代码,主要是将适配器添加到ViewPager中
package com.example.administrator.myfragment; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.FrameLayout; import android.widget.LinearLayout; import android.widget.RadioGroup; import com.example.administrator.myfragment.adapter.MyFragmentAdapter; import com.example.administrator.myfragment.fragment.MyFirstFragment; import com.example.administrator.myfragment.fragment.MySecondFragment; import com.example.administrator.myfragment.fragment.MyThirdFragment; import java.util.ArrayList; import java.util.List; public class MainActivity extends FragmentActivity { private MyFirstFragment mMyFirstFragment; private MySecondFragment mMySecondFragment; private MyThirdFragment mMyThirdFragment; private FragmentManager mFragmentManager; private FragmentTransaction mFragmentTransaction; private List<Fragment>mFragments; private ViewPager mViewPager; private RadioGroup mRadioGroup; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mViewPager= (ViewPager) findViewById(R.id.fragment_viewpager); mRadioGroup= (RadioGroup) findViewById(R.id.fragment_radiogroup); mFragmentManager=getSupportFragmentManager(); mFragments=new ArrayList<>(); mMyFirstFragment=new MyFirstFragment(); mMySecondFragment=new MySecondFragment(); mMyThirdFragment =new MyThirdFragment(); mFragments.add(mMyFirstFragment); mFragments.add(mMySecondFragment); mFragments.add(mMyThirdFragment); mFragmentTransaction=mFragmentManager.beginTransaction(); MyFragmentAdapter mAdapter=new MyFragmentAdapter(mFragmentManager,mFragments); mViewPager.setAdapter(mAdapter); mRadioGroup.check(R.id.button1); mRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { switch (checkedId){ case R.id.button1: mViewPager.setCurrentItem(0); break; case R.id.button2: mViewPager.setCurrentItem(1); break; case R.id.button3: mViewPager.setCurrentItem(2); break; default: break; } } }); mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { switch (position){ case 0: mRadioGroup.check(R.id.button1); break; case 1: mRadioGroup.check(R.id.button2); break; case 2: mRadioGroup.check(R.id.button3); break; default: break; } } @Override public void onPageScrollStateChanged(int state) { } }); } }
这里添加点击事件主要是在点击下边的Button和滑动屏幕的时候保持一致性。
相关文章推荐
- PHP json_encode中文乱码解决方法
- How to install / setup /upgrade PHP 5.5.x on Ubuntu 12.04 LTS
- php-fpm开机自动启动脚本其实源码包里边就有
- 为php安装libssh2扩展
- PHP防止刷屏
- Drupal7.x的安装,php环境配置
- getParameter 和getAttribute的区别
- 在OS X系统中php访问sftp时需要ssh2扩展的安装
- php正则匹配备忘
- YII 1.0 缓存使用
- YII 1.0 隐藏单入口index.php 设置路由与伪静态
- PHP isset 函数作用
- PHP_CURL之模拟POST登陆
- zabbix安装------安装php
- php——$_GET应用
- php中使用引用和global
- 清除Teleport的tppabs标签
- php 获取隔日日期
- PHP是怎么运行的
- 【laravel】CRUD数据库操作基础记录