首页 > 其他分享 >Android入门教程 | RecyclerView使用入门

Android入门教程 | RecyclerView使用入门

时间:2023-10-27 11:36:35浏览次数:38  
标签:ViewHolder layout VH 入门教程 item Android RecyclerView

Android入门教程 | RecyclerView使用入门_Android

想必大家对列表的表现形式已经不再陌生。手机上有联系人列表,文件列表,短信列表等等。 本文讲述的是在 Android 开发中用 RecyclerView 来实现列表效果。

使用步骤

引入RecyclerView

在 app 的 build.gradle 文件中添加引用。我们使用的是 androidx 包。

gradle:

dependencies {
    // ...
    implementation 'androidx.recyclerview:recyclerview:1.1.0'
}
数据准备

先确定一下要显示什么样的数据。是用户信息,联系人,或是文件。这里以字符为例。 写代码前,我们先考虑一下需求,就是要如何显示,怎么显示数据。日常工作中,一般会有 UI 效果图。而本文中的美术设计就由我们自己发挥了。

比如显示 a97

ViewHolder 与 layout

现在要显示的数据已经确定了。来设计UI表现。layout与 ViewHolder 紧密相关。在设计 Adapter 类前,先写 ViewHolder 类会比较好。

新建定义 item(列表子项)的布局文件item_letter.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="horizontal">

    <TextView
        android:id="@+id/tv1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#000000" />

    <TextView
        android:id="@+id/tv2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#000000" />

</LinearLayout>

这里使用内部类,把 ViewHolder 类写在 Activity 类里面。

创建VH类

private class VH extends RecyclerView.ViewHolder {
    TextView tv1;
    TextView tv2;

    public VH(@NonNull View itemView) {
        super(itemView);
        tv1 = itemView.findViewById(R.id.tv1);
        tv2 = itemView.findViewById(R.id.tv2);
    }
}

从上面可以看出,ViewHolder 和 item 的 layout 是紧密相关的。 layout 里面的 id 写的比较简单。实际项目中可以给一些更有意义的 id 命名。

在 activity 的 layout 文件中,添加RecyclerView

layout 中添加 RecyclerView

<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/re_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
设计 Adapter

设计一个适配器继承自 RecyclerView.Adapter<VH>

这里的VH是我们上面写好的 ViewHolder。

LetterAdapter中持有它自己的数据列表。需要实现3个方法。

  • onCreateViewHolder方法,要求返回VH对象。
- 这里就是创建VH对象并返回。而VH构造器要求传入一个View,我们利用`LayoutInflater`创建一个view给它。当然,创建的根据就是前面设计好的`item_letter`。

LetterAdapter:

private class LetterAdapter extends RecyclerView.Adapter<VH> {

    private List<Character> dataList;

    public LetterAdapter(List<Character> dataList) {
        this.dataList = dataList;
    }

    @NonNull
    @Override
    public VH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        return new VH(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_letter, parent, false));
    }

    @Override
    public void onBindViewHolder(@NonNull VH holder, int position) {
        Character c = dataList.get(position);
        holder.tv1.setText(c.toString());
        holder.tv2.setText(String.valueOf(Integer.valueOf(c)));
    }

    @Override
    public int getItemCount() {
        return dataList.size();
    }
}

粗心大意的时候,可能会忘记初始化 adapter 里的 dataList。会报一个null pointer异常。

设置 RecyclerView

在 Activity 的 onCreate 方法里进行了初始化。

RecyclerView需要2项设置,适配器与LayoutManager。适配器就是我们上面定的那个。 LayoutManager这里用LinearLayoutManager,指定为垂直方向,这样我们会得到一个上下滑动的列表。

使用 LinearLayoutManager

List<Character> characterList = new ArrayList<>();
for (char c = 'a'; c <= 'z'; c++) {
    characterList.add(c);
}

mLetterAdapter = new LetterAdapter(characterList);
RecyclerView letterReView = findViewById(R.id.re_view);
letterReView.setAdapter(mLetterAdapter);
letterReView.setLayoutManager(new LinearLayoutManager(this, RecyclerView.VERTICAL, false));` </pre></details>
观察运行结果

运行到手机或者模拟器上,打开这个activity。有的朋友就发现,为啥屏幕里一个子项item就占满了整个屏幕?

因为我们前面设置的item占满屏幕。回到item_letter.xml,看一下根layout的设置。 把layout_height="match_parent"里的设置改为wrap_content。 重新编译运行一下再看看结果。

我们也可以给根 layout 设置固定的高度。具体视美术设计和需求而定。

最后分享一份

【腾讯技术团队出品】Android零基础入门到精通,Android Studio安装教程+全套安卓基础教程

Android编程入门教程

Java语言基础从入门到熟悉

Android入门教程 | RecyclerView使用入门_android_02

Kotlin语言基础从入门到熟悉

Android入门教程 | RecyclerView使用入门_android_03

Android 技术栈从入门到熟悉

Android入门教程 | RecyclerView使用入门_Android_04

Android Jetpack 全家桶全面学习

Android入门教程 | RecyclerView使用入门_android_05

对于新手来说可能安装Android Studio存在一定困难你可以看着以下视频,一步步的跟着学习安装运行

Android Studio 安装教程

Android入门教程 | RecyclerView使用入门_List_06

有了Java阶段的学习,这一阶段建议以视频学习为主辅以图书查漏补缺。如果以图书为主,可以根据图书讲解敲代码,辅以教学视频查漏补缺。遇到问题可以去百度,入门的问题一般会有很多人遇到,并且给出比较好的解答。

需要掌握基本知识点,比如四大组件如何使用、如何创建Service、如何进行布局、简单的自定义View、动画、网络通信等常见技术。

全套零基础教程已经为你们准备好了,需要的可以添加下方二维码免费领取

Android入门教程 | RecyclerView使用入门_Android_07

Android入门教程 | RecyclerView使用入门_android_08

Android入门教程 | RecyclerView使用入门_List_09

Android入门教程 | RecyclerView使用入门_android_10

Android入门教程 | RecyclerView使用入门_List_11

Android入门教程 | RecyclerView使用入门_Android_12

Android入门教程 | RecyclerView使用入门_android_13

Android入门教程 | RecyclerView使用入门_Android_14

标签:ViewHolder,layout,VH,入门教程,item,Android,RecyclerView
From: https://blog.51cto.com/u_16163452/8051972

相关文章

  • Android定时器
    Timer和TimerTask这是常规的实现方式,对于大多数人的选择都会采用这种方式实现定时任务。这种实现方式的生命周期和Acticity的生命周期一样,当Activity销毁后,该定时任务也会结束。即退出该应用时,定时任务结束。Timertimer=newTimer();TimerTasktimerTask=......
  • 牛啊牛啊!仅凭这份《Android核心面试题笔记》,去美团三面,已OC
    今天来分享一位读者美团校招Android岗位的面经。下面是正文。个人背景:双非本,机械专业转码。美团一面(40分钟)介绍项目项目中的滑动冲突是怎么解决的?实习的内容,实习过程中有什么印象深刻的?现在让你改进实习工作中的某个功能,你觉得有哪些可以改进的?JAVA中HashMap用过吗,了解基本原理吗......
  • Android图片进行高斯模糊处理/毛玻璃效果
    android中实现毛玻璃效果的方法比较多,有用java实现图片处理算法的,也有把算法用c/c++实现并用jni调用的,而实现毛玻璃的开源库在github上也有不少.其实google的官方sdk中也为我们提供了这样的工具,本着能用官方尽量不自己实现,能自己实现尽量不用第三方的原则,官方的实现方......
  • Android使用Profiler查看应用内存分析
    内存分析是Profiler中的一个组件,可以帮助我们识别可能会导致应用卡顿、冻结甚至崩溃的内存泄露和内存抖动。可以显示应用内存使用情况实时图表,帮助我们捕获堆转储、强制执行垃圾回收以及跟踪内存的分配情况。打开内存分析步骤:1、依次点击View→ToolWindow→Profiler2、从Profile......
  • Android压测测试事件行为参数对照表
    一、压测命令参数说明执行参数参数说明颗粒度指标基础参数--throttle<ms>用于指定用户操作间的时延。-s随机数种子,用于指定伪随机数生成器的seed值,如果seed值相同,则产生的时间序列也相同。多用于重测、复现问题。-v指定输出日志的级别,共有3个级别。1)-v:仅提供启动提示、测试完......
  • 悲哀!大厂门槛成了很多Android开发无法企及的追求?这个机会到底怎么获得!
    大厂offer是每个技术人的追求许多程序员都梦想着能够获得大厂的offer,这并不是饭后闲聊的话题,而是每个技术人的追求。像阿里、腾讯、美团、字节跳动、京东等公司的技术氛围和技术规范度,相较于一些创业型公司或小公司,显然要高得多。如果能在这类公司工作几年,对个人能力的提升无疑会非......
  • Android系统SELinux详解
    前言SELinux是一种加强文件安全的一种策略,可以更好地保护我们的Android系统,比如限制系统服务的访问权限、控制应用对数据和系统日志的访问等措施,这样就降低了恶意软件的影响,并且可以防止因代码存在的缺陷而产生的对系统安全的影响。从系统安全方面考虑,SELinux是保护神,但是从软件开......
  • 最好用的Android APK第三方下载站,替代Google play
    最好用的AndroidAPK第三方下载站,推荐以下7个替代Googleplay方案可通过第三方应用程序下载各种apk历史版本1、APKPure:APKPure 提供:网页、AppAPKPure是知名度很高的免费安卓应用商店,基本上大部分GooglePlay上架的软件都可以在这里找到,但最近也有被屏蔽的倾向。2、APKMirror......
  • H5与Android的调试
    准备工作:PC下载并安装chrome(谷歌)浏览器一台安卓手机(4.4系统以上),用usb线链接电脑,打开开发者模式,且允许WebView进行调试,需新增如下代码:WebView.setWebContentsDebuggingEnabled(true);编译并运行代码chrome浏览器地址栏输入chrome://inspect,进入后点击inspect即进入调试模式(需要......
  • 悲哀!大厂门槛成了很多Android开发无法企及的追求?这个机会到底怎么获得!
    大厂offer是每个技术人的追求许多程序员都梦想着能够获得大厂的offer,这并不是饭后闲聊的话题,而是每个技术人的追求。像阿里、腾讯、美团、字节跳动、京东等公司的技术氛围和技术规范度,相较于一些创业型公司或小公司,显然要高得多。如果能在这类公司工作几年,对个人能力的提升无疑会非......