viewpager中嵌套fragment实现联动

viewpager中嵌套fragment实现联动


activity-main中

线性布局竖向排列

<android.support.v4.view.ViewPager
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:id="@+id/view_pager"
    >
</android.support.v4.view.ViewPager>

<RadioGroup
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/rg"
    android:orientation="horizontal"
    >
    <RadioButton
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="漫画"
        android:id="@+id/rb1"
        android:button="@null"
        android:gravity="center"
        android:textSize="20sp"
        />

    <RadioButton
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="发现"
        android:id="@+id/rb2"
        android:button="@null"
        android:gravity="center"
        android:textSize="20sp"
        />

    <RadioButton
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="V社会"
        android:id="@+id/rb3"
        android:gravity="center"
        android:textSize="20sp"
        android:button="@null"
        />

    <RadioButton
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="我的"
        android:gravity="center"
        android:textSize="20sp"
        android:id="@+id/rb4"
        android:button="@null"
        />

</RadioGroup>

mainactivity类

public class MainActivity extends AppCompatActivity {

    private ViewPager view_pager;
    private ArrayList<Fragment> fragments;
    private MyFragement_one myFragement_one;
    private MyFragement_two myFragement_two;
    private MyFragement_three myFragement_three;
    private MyFragement_four myFragement_four;
    private RadioButton rb1;
    private RadioButton rb2;
    private RadioButton rb3;
    private RadioButton rb4;
    private RadioGroup rg;
    private MyAdapter myAdapter;
    private int index;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //找视图
        initView();

        //加载数据
        initData();

        //点击监听
        initClick();

    }

    private void initClick() {

        view_pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {

                switch (position) {

                    case 0: {
                        rb1.setChecked(true);

                    }
                    break;
                    case 1: {
                        rb2.setChecked(true);

                    }
                    break;

                    case 2: {
                        rb3.setChecked(true);

                    }
                    break;

                    case 3: {
                        rb4.setChecked(true);

                    }
                    break;

                }

            }



            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });



        //rg  点击rg跳转
        rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, @IdRes int checkedId) {

                switch (checkedId){

                    case R.id.rb1:

                        index = 0;

                        break;

                    case R.id.rb2:

                        index = 1;

                        break;

                    case R.id.rb3:

                        index = 2;

                        break;

                    case R.id.rb4:

                        index = 3;

                        break;


                }

                if (view_pager.getCurrentItem() != index){

                    view_pager.setCurrentItem(index,false);

                }


            }
        });


    }

    private void initData() {

        myFragement_one = new MyFragement_one();
        myFragement_two = new MyFragement_two();
        myFragement_three = new MyFragement_three();
        myFragement_four = new MyFragement_four();

        fragments = new ArrayList<>();

        fragments.add(myFragement_one);
        fragments.add(myFragement_two);
        fragments.add(myFragement_three);
        fragments.add(myFragement_four);


        myAdapter = new MyAdapter(getSupportFragmentManager(),fragments);

        view_pager.setAdapter(myAdapter);


    }

    private void initView() {
        view_pager = (ViewPager) findViewById(R.id.view_pager);
        rb1 = (RadioButton) findViewById(R.id.rb1);
       
        rb2 = (RadioButton) findViewById(R.id.rb2);
        
        rb3 = (RadioButton) findViewById(R.id.rb3);
       
        rb4 = (RadioButton) findViewById(R.id.rb4);
        
        rg = (RadioGroup) findViewById(R.id.rg);
        rg.setOnClickListener(this);



    }
}


myadapter类

public class MyAdapter extends FragmentPagerAdapter{


    private Context context;
    private ArrayList<Fragment> list = new ArrayList<>();


    public MyAdapter(FragmentManager fm,  ArrayList<Fragment> list) {
        super(fm);

        this.list = list;
    }

    public MyAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        return list.get(position);
    }

    @Override
    public int getCount() {
        return list != null ? list.size() : 0;
    }
}


有四个fragment类

fragment有oncreatview方法和onviewcreated方法





就可以实现简单的联动了。




猜你喜欢

转载自blog.csdn.net/hisunyl/article/details/72817357
今日推荐