您的位置:首页 > 编程语言 > PHP开发

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布局。

<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和滑动屏幕的时候保持一致性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: