首页 > 其他分享 >(原创)安卓快速使用简单的ViewPager

(原创)安卓快速使用简单的ViewPager

时间:2023-11-14 22:55:55浏览次数:29  
标签:原创 NonNull ViewPager 安卓 Override container public view

原创声明:本文所有图片和代码皆由本人制作和编写。

目录

前言

这学期刚开的安卓课程,为了写实验上网查资料,只想找简明扼要的教程来让我快速写完实验,不过大多数教程会先进行长篇介绍,对于赶ddl的我有点太详细了。通过实验后,我写下这篇简洁的文章作为备忘录,最后还有个大作业要写。

本文仅涉及最简ViewPager使用方法,适合用于刚接触安卓的新手。



目标与效果

使用一个通用ViewPager布局来对题目和答案进行展示。


滑动翻页效果:



4步走

第一:在布局文件添加ViewPager组件

哪个活动需要ViewPager组件就在该活动的.xml布局文件添加如下代码:

    <androidx.viewpager.widget.ViewPager
        android:id="@+id/viewPager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

第二:为ViewPager设计布局

创建一个新的.xml文件:

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/pageNumberTextView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="16dp"
        android:textSize="18sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/questionTextView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="16dp"
        android:textSize="18sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/answerTextView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="16dp"
        android:textSize="16sp" />

</LinearLayout>

第三:创建适配器类

至少需要实现以下两个方法:
getItemCount(): 返回ViewPager中包含的项(即页面)的总数。
createItem(int position): 返回给定位置的页面。

我这里主要是为了显示当前页的页码,所以单独创建了一个类。

public class CustomPagerAdapter extends PagerAdapter {
    private Context context;
    private List<Questions.Question> questionList;

    public CustomPagerAdapter(Context context) {
        this.context = context;
        this.questionList = new Questions().getQuestionList();
    }

    @Override
    public int getCount() {
        return questionList.size();
    }

    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
        return view.equals(object);
    }

    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        View view = LayoutInflater.from(context).inflate(R.layout.item_question, container, false);

        TextView pageNumberTextView = view.findViewById(R.id.pageNumberTextView);
        TextView questionTextView = view.findViewById(R.id.questionTextView);
        TextView answerTextView = view.findViewById(R.id.answerTextView);

        Questions.Question question = questionList.get(position);

        pageNumberTextView.setText("第 " + (position + 1) + " 页"); // 设置页码
        questionTextView.setText(question.getText());
        answerTextView.setText(question.getAnswer());

        container.addView(view);

        return view;
    }

    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        container.removeView((View) object);
    }
}



第四:把布局文件和适配器跟主活动联系起来

public class MainActivity extends AppCompatActivity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_view_pager);

            ViewPager viewPager = findViewById(R.id.viewPager);
            CustomPagerAdapter adapter = new CustomPagerAdapter(this);
            viewPager.setAdapter(adapter);
        }

}


后记

感谢你看到这里。

标签:原创,NonNull,ViewPager,安卓,Override,container,public,view
From: https://www.cnblogs.com/lmj00/p/17832782.html

相关文章

  • Genio 700/MT8390安卓核心板规格参数_MTK核心板定制
    联发科Genio700(MT8390)是一款针对智能家居、互动零售、工业和商业应用的高性能边缘人工智能物联网平台。它具有高度响应的边缘处理、先进的多媒体功能、多种传感器和连接选项,并支持多任务操作系统。4TOPSAPU性能:该高效的芯片内人工智能多处理器(APU)提供4TOPS的性能,......
  • Android安卓 match_parent与match_parent区别
    Android安卓match_parent与match_parent区别 在Android中,match_parent和fill_parent是布局参数(layoutparameters)中的两个常用属性,它们在XML中用于定义一个视图(View)的尺寸。在最新的Android版本中,fill_parent已经被废弃,而match_parent用于替代。**match_parent:**这个属......
  • Android安卓gravity和layout_gravity的区别
    在Android中,gravity和layout_gravity是用于控制视图元素在布局中位置的两个属性,它们有不同的作用和适用范围。gravity:gravity是用于设置视图元素内部内容(文本、图像等)在视图本身内的对齐方式。它影响的是视图内部内容的位置。<TextViewandroid:layout_width="wrap_conte......
  • 可以通过电脑远程控制安卓设备的软件
    有些时候,我们需要用电脑远程控制安卓设备,比如远程维护门店设备、安卓系统的户外广告牌等等。我们来探索和比较几款允许用户通过电脑远程控制安卓设备的软件。1、SplashtopBusinessSplashtop是一种多功能远程访问解决方案,以其高性能流媒体而闻名。它允许用户从计算机远程控制......
  • MT8788/MTK8788安卓核心板介绍_4G全网通安卓智能模块
    MT8788核心板是一款功能强大的4G全网通安卓智能模块。它采用联发科AIOT芯片平台,具有超高性能和低功耗的特点。该核心板搭载了12nm制程四个Cortex-A73+四个Coretex-A53处理器,最高主频可达2.0GHZ。内存方面,板载内存为4GB+64GB,同时也支持2GB+16GB和3GB+32GB的配置。图形方面,MT8788......
  • uniapp(安卓)之文件上传
    uniapp(安卓)之文件上传uniapp提供的uni.chooseFile只支持H5和微信小程序,所以想上传除图片/视频外的非媒体文件,需要使用原生的方式开发。 uploadtxdr(){//使用plus选择文件 letthat=this; letfilePath='' letmain=plus.android.runtimeMainAct......
  • 安卓-SSTP客户端连接教程
    下载SSTP通用连接客户端下载地址:http://cdn.xzpaladin.com/down/sstppro.apk下载后安装进安卓设备中并运行点击右下角的+添加配置选择新建SSTP配置文件名称可以随意填写点击远程服务器点击右下角的+添加服务器地址服务器查询:http://www.pldip.com/city**注意:根据购买的产品不同......
  • 安卓自定义控件快速了解
    自定义控件,自定义视图方式,假设我们写好一个视图,就以这个视图封装起来做成一个组件,这个自定义的控件就想当方便以后相同功能时直接调用这个核心分为三步,第一步编写一个类继一个视图,这个继承的视图比如​RelativeLayout​,除了​RelativeLayout​以外,Android还提供了其他一些常用......
  • 直播会议一体机主板|5G智能会议一体机安卓主板方案介绍
    5G直播会议一体机主板采用了强大的音视频输入输出,内置安卓13系统,适用于多种直播和会议软件,广泛应用于智能会议一体机、便携直播机、录播导播、无人直播、视频传输等多种领域。该主板采用国产6nm旗舰芯片紫光展锐T820处理器,提供了4+64G、6+128G、8+256G多种内存版本可选。在无线连接......
  • 【原创】爆肝23页教程,自研关键字驱动框架
    tep关键字驱动框架教程tep简介tep是TryEasyPytest的首字母缩写,关键字驱动框架,专注于接口自动化测试,单个文件即可完成用例编写。设计理念✔️稳定:基于成熟框架pytest,天生强大✔️规范:RobotFramework风格,井井有条✔️统一:关键字命名与JMeter组件一致,一知万用✔️原生:关键字用法保......