fragment加viewpager使用,并上radiogroup一起使用
将页面与按钮绑定
一、xml布局
一个viewpager和一组radiogroup
二、FragmentPagerAdapter适配器
继承自fragmentpageradapter
实现两个基本方法和构造方法
构造方法默认一个参数fragmentmanager,因为我们要和fragment结合使用,便自加一个fragment集合
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;
import java.util.List;
public class ViewPagerAdapter extends FragmentPagerAdapter {
List<Fragment> fragmentList;
public ViewPagerAdapter(@NonNull FragmentManager fm,List<Fragment> fragments) {
super(fm);
this.fragmentList = fragments;
}
@NonNull
@Override
public Fragment getItem(int position) {
return fragmentList.get(position);
}
@Override
public int getCount() {
return fragmentList.size();
}
}
三、创建几个fragment
四、主文件编写
(一)、拿到viewpager和单选按钮组控件
(二)、实例化各个fragment,添加至fragment集合中
(三)、实例化fragmentmanager,实例化适配器,传入manager和集合。
(四)、默认viewpager定位于第一个条目,单选按钮组选第一个
(五)、实现viewpager监听事件,当他滑动于不同索引时单选按钮组选择对应选项(addOnPageChangeListener)
(六)、设置单选按钮组监听事件,当单选按钮选择不同按钮时,viewpager实现对应的切换(setOnCheckedChangeListener)
package com.yangpeilin.media.ViewPagerFragment;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import android.os.Bundle;
import android.util.Log;
import android.widget.RadioGroup;
import com.yangpeilin.media.R;
import java.util.ArrayList;
import java.util.List;
public class ViewPager extends AppCompatActivity {
private static final String TAG = "hhh";
private List<Fragment> fragmentList;
private ViewPagerAdapter adapter;
private IndexFragment indexFragment;
private ShoppingFragment shoppingFragment;
private TypeFragment typeFragment;
private androidx.viewpager.widget.ViewPager myviewpager;
private MyFragment fragment;
private RadioGroup rd_group;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_pager);
myviewpager = findViewById(R.id.myviewpager);
rd_group = findViewById(R.id.rd_group);
fragmentList = new ArrayList<>();
indexFragment = new IndexFragment();
typeFragment = new TypeFragment();
shoppingFragment = new ShoppingFragment();
fragment = new MyFragment();
fragmentList.add(indexFragment);
fragmentList.add(typeFragment);
fragmentList.add(shoppingFragment);
fragmentList.add(fragment);
FragmentManager fragmentManager = getSupportFragmentManager();
adapter = new ViewPagerAdapter(fragmentManager,fragmentList);
myviewpager.setAdapter(adapter);
myviewpager.setCurrentItem(0);
rd_group.check(R.id.rb_index);
myviewpager.addOnPageChangeListener(new androidx.viewpager.widget.ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
switch (position){
case 0:
rd_group.check(R.id.rb_index);
break;
case 1:
rd_group.check(R.id.rb_type);
break;
case 2:
rd_group.check(R.id.rb_shopping);
break;
case 3:
rd_group.check(R.id.rb_my);
break;
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
rd_group.setOnCheckedChangeListener((group, checkedId) -> {
switch (checkedId){
case R.id.rb_index:
myviewpager.setCurrentItem(0);
break;
case R.id.rb_type:
myviewpager.setCurrentItem(1);
break;
case R.id.rb_shopping:
myviewpager.setCurrentItem(2);
break;
case R.id.rb_my:
myviewpager.setCurrentItem(3);
break;
}
});
}
}