Fragment&&ViewPager2相关&&回顾作业内容

上述是作业要求

基本思路,在fragment使用adapter实现

Fragment

Fragment是为了解决Android APP运行的设备大小不一而提出来的,我们可以把Fragment当成Activity界面的一个组成部分,一个Activity中可以包含很多Fragment,他有着自己的布局文件

ViewPager2

是一种adapterview,配合Fragment的使用,这需要借助FragmentStateAdapter

1

这是程序的主布局文件,一个TabLayout和一个ViewPager2

2

定义两个布局文件,一个是页面的整体布局,一个是在每一个小的Adapter中的item

BUG警告,在Adapter中的item布局文件请不要和上面的布局文件混淆,他们是不一样的(debug一天有感

对于数据源的类,我们在get方法中添加了初始的的数据

在这个Fragment中我们返回了一个GirdView,并把这个填好了去返回,对于每一个界面我们都写一个一样的即可

当然,我们不难发现,在定义的过程中我们使用了不同的Adapter,自然,我们需要定义每一个Adapter,与上一节的一样,我们自定义Adapter需要重写四个方法,最后再根据布局文件填入数据即可

3

自定义的FragmentStateAdapter,和自定义Adapter类似,不过构造方法和一些方法不同

让我们来看看整体的代码吧



public class HomWorkActivity extends AppCompatActivity {

    private TabLayout tb_shop;
    private ViewPager2 vp_shop;//主页面的两个控件
    private List<String> tabNameList;//游标的list
    private List<Fragment> fragmentList;//fragment的list

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

        findViews();//获取控件

        initFragment();//初始化

        FragmentShopAdapter shopAdapter = new FragmentShopAdapter(
                fragmentList,//数据源
                this//当前的activity
        );//这里是步骤三 获取适配器对象
        vp_shop.setAdapter(shopAdapter);//给ViewPager2绑定适配器

        TabLayoutMediator mediator = new TabLayoutMediator(
                tb_shop,
                vp_shop,
                new TabLayoutMediator.TabConfigurationStrategy() {
                    @Override
                    public void onConfigureTab(@NonNull TabLayout.Tab tab, int position) {
                        tab.setText(tabNameList.get(position));
                    }
                }
        );
        mediator.attach();
        // 这里使用匿名内部类的方式去关联,按照下标的方式依次绑定标签和fragment

    }

    private void initFragment() {
        fragmentList = new ArrayList<>();
        fragmentList.add(new Fragment_Recommend());
        fragmentList.add(new Fragment_Camera());
        fragmentList.add(new Fragment_Lens());//现在list里面加入三个fragment,在这里进入步骤二


        tabNameList = new ArrayList<>();
        tabNameList.add("推荐");
        tabNameList.add("相机");
        tabNameList.add("镜头");
    }

    private void findViews() {
        tb_shop = findViewById(R.id.tb_shop);
        vp_shop = findViewById(R.id.vp_shop);
    }


}

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值