android-fragment和viewpager的使用

本文介绍如何使用ViewPager与RadioButton实现页面间的联动效果。通过创建多个Fragment并利用ViewPagerAdapter适配器,实现了滑动ViewPager时RadioButton自动切换选中状态,反之亦然。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;
            }
        });
    }

}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值