文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

最详细的主界面ViewPager2 使用详解

2023-09-13 20:41

关注

目录

最简单的水平翻页

1.主布局

2.对ViewPager进行定制,创建一个类和布局

3.适配器

a.

b.

c.

d.

e.

4.主函数

最简单的垂直翻页

a.

b.


学习ViewPager2之前,建议先学习使用RecycleView

ViewPager2属于新增的配件,且底层是用RecycleViews实现的,需要在项目的中添加相应的依赖.

implementation 'androidx.recyclerview:recyclerview:1.2.1'implementation 'androidx.viewpager2:viewpager2:1.0.0'

最简单的水平翻页

1.主布局

        

2.对ViewPager进行定制,创建一个类和布局

package com.example.view_pager2;public class ViewPager {    private String name;    private int image;    public ViewPager(String name, int image) {        this.name = name;        this.image = image;    }    public String getName() {        return name;    }    public int getImage() {        return image;    }}
        

3.适配器

package com.example.view_pager2;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.TextView;import androidx.annotation.NonNull;import androidx.recyclerview.widget.RecyclerView;import java.util.List;public class HorizontalVpAdapter extends RecyclerView.Adapter {    private List viewpagerList;    public HorizontalVpAdapter(List viewpagerList) {        this.viewpagerList = viewpagerList;    }    @NonNull    @Override    public HorizontalVpAdapter.HorizontalVpViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.viewpager_item,parent,false);        return new HorizontalVpViewHolder(view);    }    @Override    public void onBindViewHolder(@NonNull HorizontalVpAdapter.HorizontalVpViewHolder holder, int position) {        ViewPager viewpager = viewpagerList.get(position);        holder.mImage.setImageResource(viewpager.getImage());        holder.mText.setText(viewpager.getName());    }    @Override    public int getItemCount() {        return viewpagerList.size();    }    class HorizontalVpViewHolder extends RecyclerView.ViewHolder {        ImageView mImage;        TextView mText;        HorizontalVpViewHolder(@NonNull View itemView) {            super(itemView);            mImage = itemView.findViewById(R.id.image);            mText = itemView.findViewById(R.id.text);        }    }}

在这里,顺便我们把RecycleView复习一下

a.

首先我们创建了一个HorizontalVpViewHolder内部类,继承RecycleView.ViewHolder.然后我们在构造函数中传入了一个View,这个就是每个页面的最外层布局了

b.

接着我们创建一个HorizontalVpAdapter的构造函数,这个用来把要使用的数据都传进来,我们后续的操作都是围绕这个数据进行的

c.

onCreateViewHolder()这个方法是用来创建一个ViewHolder实例的,我们在这个方法中将布局加载进来,传入到构造函数中,最后在返回这个实例.

d.

onBindViewHolder()这个方式就是对每个子项的数据进行赋值,在每个子项被滚入到屏幕的时候进行执行,这里我们可以通过position参数达到当前的实例.然后再将数据设置就可以了

e.

getItemCount()就是告诉ViewPager有多少个子项就可以了,返回链表的长度

4.主函数

package com.example.view_pager2;import androidx.appcompat.app.AppCompatActivity;import androidx.viewpager2.widget.ViewPager2;import android.os.Bundle;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity {    private List viewPagerList = new ArrayList<>();    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initData();        ViewPager2 viewPager2 = findViewById(R.id.view_pager);        HorizontalVpAdapter horizontalVpAdapter = new HorizontalVpAdapter(viewPagerList);        viewPager2.setAdapter(horizontalVpAdapter);    }    private void initData(){        for (int i = 0; i < 2; i++){            ViewPager viewPager1 = new ViewPager("123", R.drawable.cloudy);            viewPagerList.add(viewPager1);            ViewPager viewPager2 = new ViewPager("456", R.drawable.moon);            viewPagerList.add(viewPager2);            ViewPager viewPager3 = new ViewPager("789", R.drawable.sunny);            viewPagerList.add(viewPager3);        }    }}

最简单的垂直翻页

变成垂直的翻页只需要两步

a.

给主布局中的ViewPager中加入,使他的布局变成垂直的即可

android:orientation="vertical"

b.

给活动中添加

viewPager2.setOrientation(ViewPager2.ORIENTATION_VERTICAL);
@Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initData();        ViewPager2 viewPager2 = findViewById(R.id.view_pager);        HorizontalVpAdapter horizontalVpAdapter = new HorizontalVpAdapter(viewPagerList);        viewPager2.setAdapter(horizontalVpAdapter);        viewPager2.setOrientation(ViewPager2.ORIENTATION_VERTICAL);    }

 

来源地址:https://blog.csdn.net/qq_65337539/article/details/127409971

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯