Android-第七节RecyclerView详解

article/2025/11/10 14:20:20

目录

  • 一、RecyclerView概述
  • 二、RecyclerView使用步骤
  • 三、布局管理器

一、RecyclerView概述

RecyclerView是support-v7包中的新组件,是一个强大的滑动组件,与经典的ListView相比,同样拥有item回收复用的功能,这一点从它的名字Recyclerview即回收view也可以看出
RecyclerView是官方在5.0之后新添加的控件,推出用来替代传统的ListView和GridView列表控件。

二、RecyclerView使用步骤

1.xml下添加RecyclerView控件
在这里插入图片描述
2.添加依赖

    implementation 'androidx.recyclerview:recyclerview:1.1.0'

在这里插入图片描述
3.创建item
在这里插入图片描述
在这里插入图片描述
核心代码:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="100dp"><TextViewandroid:id="@+id/textView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="48dp"android:layout_marginTop="20dp"android:text="TextView"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /><TextViewandroid:id="@+id/textView2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="48dp"android:layout_marginTop="20dp"android:text="TextView"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/textView" /><TextViewandroid:id="@+id/textView3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginBottom="40dp"android:text="TextView"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.935"app:layout_constraintStart_toEndOf="@+id/textView" />
</androidx.constraintlayout.widget.ConstraintLayout>

4.创建实体类

public class Chat {private String name;private String content;private String time;
}

然后在MainActivity中定义内部类 ViewHolder类、 MyAdapter类以及设置RecyclerView相关逻辑(定义类上RecyclerView有点不同,需要继承一个ViewHolder)
在这里插入图片描述

注意:需要先写ViewHolder再写Adapter

5.再编写RecyclerView的adapter,首先要继承一个adapter类,注意要放一个泛型参数(这里放我们刚写的Myholder)
在这里插入图片描述
重写里面的方法
在这里插入图片描述

  • onCreateViewHolder()
    这个方法主要生成为每个Item inflater出一个View,但是该方法返回的是一个ViewHolder。该方法把View直接封装在ViewHolder中,然后我们面向的是ViewHolder这个实例,当然这个ViewHolder需要我们自己去编写。直接省去了当初的convertView.setTag(holder)和convertView.getTag()这些繁琐的步骤

  • onBindViewHolder()
    这个方法主要用于适配渲染数据到View中。方法提供给你了一viewHolder而不是原来的convertView。

  • getItemCount()
    这个方法就类似于BaseAdapter的getCount方法了,即总共有多少个条目。接下来通过几个小的实例帮助大家更深入的了解RecyclerView的用法。

在这里插入图片描述
6.显示RecyclerView视图
在这里插入图片描述
7.运行结果
在这里插入图片描述
核心代码:

package com.hnucm.a_test08;import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;import java.util.ArrayList;
import java.util.List;public class MainActivity extends AppCompatActivity {List<Chat> chatList=new ArrayList<>();RecyclerView recyclerView;MyAdapter myAdapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);recyclerView=findViewById(R.id.rv);for (int i=0;i<100;i++){Chat chat=new Chat();chat.title="标题"+i;chat.content="这是第"+i+"条内容";chat.time="2022年2月28日20:58:"+i;chatList.add(chat);}myAdapter=new MyAdapter();                 //创建一个适配器recyclerView.setAdapter(myAdapter);        //设置适配器LinearLayoutManager layoutManager=new LinearLayoutManager(MainActivity.this);        //布局管理recyclerView.setLayoutManager(layoutManager);            //设置布局管理}//RecyclerView MyHolder写法class MyHolder extends RecyclerView.ViewHolder{TextView mtitletv;TextView mcontenttv;TextView mtimetv;public MyHolder(@NonNull View itemView) {super(itemView);mtitletv=itemView.findViewById(R.id.tv_title);mcontenttv=itemView.findViewById(R.id.tv_content);mtimetv=itemView.findViewById(R.id.tv_time);}}class MyAdapter extends RecyclerView.Adapter<MyHolder>{@NonNull@Overridepublic MyHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {//在这个方法中// 将item布局加载进来,创建一个MyHolder实例,// 并把加载出来的布局传入到构造函数当中,// 最后将MyHolder实例返回View view= LayoutInflater.from(MainActivity.this).inflate(R.layout.item,parent,false);//加载ViewMyHolder myHolder=new MyHolder(view);return myHolder;}@Overridepublic void onBindViewHolder(@NonNull MyHolder holder, int position) {//进行赋值Chat chat=chatList.get(position);holder.mtitletv.setText(chat.title);holder.mtimetv.setText(chat.time);holder.mcontenttv.setText(chat.content);}@Overridepublic int getItemCount() {//多少子项return chatList.size();}}
}

三、布局管理器

三种布局管理器

  • LinearLayoutManager 线性布局管理器
  • StaggeredGridLayoutManager 瀑布流布局管理器
  • GridLayoutManager 网格布局管理器



线性布局管理器:

默认是竖直方向的,可以修改成水平方向的
LinearLayoutManager layoutManager=
new LinearLayoutManager(MainActivity.this,RecyclerView.HORIZONTAL,false);
第三个参数表示从左到右、从上到下默认是是false

在这里插入图片描述



网格布局管理器:
在这里插入图片描述

在这里插入图片描述




瀑布流布局管理器:

StaggeredGridLayoutManager staggeredGridLayoutManager=new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.HORIZONTAL);

在这里插入图片描述


http://chatgpt.dhexx.cn/article/WnyYp4di.shtml

相关文章

RecyclerView不显示问题

当我们使用RecyclerView控件的时候可能遇到不显示问题&#xff0c;一般分为以下情况&#xff0c; 一、RecyclerView和ScrollView嵌套使用出现RecyclerView不显示的问题&#xff0c; 首先要确保你从服务端拿到的数据不是空的&#xff0c; 1.第一种解决方式&#xff1a; 只需…

RecycleView

一. 在build.gradle中添加依赖 implementation androidx.recyclerview:recyclerview:1.1.0二. activity_main.xml <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"…

Android学习之RecyclerView

RecyclerView是android-support-v7-21版本中新增的一个Widget,官方介绍RecyclerView 是 ListView 的升级版本,更加先进和灵活。 开发环境 - IDE: ADT - SDK: Android L 首先在Android SDK Manager上下载Android Support Repository, 它会在sdk/extras/android目录下生成m2…

Android——RecyclerView入门学习之RecyclerView.Adapter

学习资料&#xff1a; 鸿洋大神为RecyclerView打造通用Adapter让RecyclerView更加好用鸿洋大神Android优雅的为RecyclerView添加HeaderView和FooterView 之前使用RecyclerView.Adapter&#xff0c;基本就类似套用公式&#xff0c;死步骤&#xff0c;对Adapter感到既熟悉又陌生…

Android——RecyclerView的使用

RecyclerView 参考&#xff1a;《第一行代码》第二版——郭霖 可以用RecyclerView来显示多行列表。 recycle 循环回收再利用。 通过一个水果列表来学习RecyclerView 准备工作&#xff0c;在app/build.gradle文件中导入依赖 dependencies {implementation androidx.appcompat:a…

RecyclerView(二)—— RecyclerView的使用

RecyclerView ListView由于强大的功能&#xff0c;在过去的Android开发当中可以说是贡献卓越&#xff0c;直到今天仍然还有不计其数的程序在使用ListView。不过ListView并不是完美无缺的&#xff0c;比如如果不使用一些技巧来提升它的运行效率&#xff0c;那么ListView的性能就…

Android RecyclerView

个人回顾&#xff1a; 1.RecyclerView用来代替ListView和GridView 2.RecyclerView可以实现瀑布流布局 3.RecyclerView最出色的是它的缓存机制&#xff08;四级缓存&#xff09;&#xff0c;ListView只有2级缓存 1.RecyclerView RecyclerView是Android 5.0推出的&#xff0c;是…

Android RecyclerView原理

文章目录 从 ListView 到 RecyclerViewRecyclerView 运行机制ListView 缓存机制RecyclerView 缓存机制RecyclerView 核心机制总结 从 ListView 到 RecyclerView RecyclerView 是在 Google I/O 在2014年时推出的控件&#xff0c;在 RecyclerView 还未出现前&#xff0c;列表都是…

AndroidStudio中RecyclerView用法

去年写了几篇关于Android的基础知识点&#xff0c;没想到收到了很多朋友的好评&#xff0c;不过后来太忙了没有继续更新&#xff0c;真的蛮遗憾的。最近又要用到Android啦&#xff0c;超级无敌巨重要的RecyclerView怎么能不讲一讲呢&#xff01;&#xff01; 1.什么是Recycler…

为RecyclerView打造通用Adapter 让RecyclerView更加好用

转载请标明出处&#xff1a; http://blog.csdn.net/lmj623565791/article/details/47251585&#xff1b; 本文出自:【张鸿洋的博客】 一、概述 记得好久以前针对ListView类控件写过一篇打造万能的ListView GridView 适配器&#xff0c;如今RecyclerView异军突起&#xff0c;…

RecyclerView的基本用法

RecyclerView 是一个增强版的ListView&#xff0c;不仅可以实现和ListView同样的效果&#xff0c;还优化了ListView中存在的各种不足之处 ResyslerView 能够实现横向滚动&#xff0c;这是ListView所不能实现的 目前官方更加推荐使用RecyclerView. 1.实现垂直方向的滚动 在 …

RecyclerView安卓androidx.widget.RecyclerView

导入RecyclerView implementation com.android.support:recyclerview-v7:28.0.0或者把常用的组件都导入了&#xff0c;包括了RecyclerView implementation com.android.support:design:28.0.01.RecyclerView介绍 RecyclerView它可以说是一个增强版的ListView。ListView由于其…

RecyclerView的基本使用

RecyclerView是Android一个更强大的控件,其不仅可以实现和ListView同样的效果,还有优化了ListView中的各种不足。其可以实现数据纵向滚动,也可以实现横向滚动(ListView做不到横向滚动)。接下来讲解RecyclerView的用法。 RecyclerView 基本用法 因为RecyclerView属于新增的控件,…

RecyclerView 的使用(androidx)

文章目录 一、导包二、基本使用三、设置分割线四、自定义点击事件五、实现 GridView六、实现瀑布流七、更多效果八、RecyclerView 常见问题九、RecyclerView 和 ScrollView 嵌套的问题 一、导包 implementation androidx.recyclerview:recyclerview:1.1.0二、基本使用 2.1、首…

RecyclerView简单使用(非常详细)

星期六&#xff0c;又是撸代码的一天 作为一个初级都算不上的小白&#xff0c;一步一个脚印的学吧&#xff0c;学一个记一个 今天记录的是RecyclerView RecyclerView 简述创建布局添加 RecyclerView和每个list布局&#xff08;偏新手向&#xff0c;选择性跳过&#xff09; 创建…

androidx.recyclerview:recyclerview的使用

添加扩展 或手动修改app/build.gradle&#xff1a; 在dependencies里添加 implementation androidx.recyclerview:recyclerview:1.0.0新建布局layout item布局fruit_item.xml&#xff1a; <?xml version"1.0" encoding"utf-8"?> <LinearLayo…

Android学习之RecyclerView的使用

RecyclerView是Android 5.0推出的&#xff0c;是support-v7包中的新组件,它被用来代替ListView和GridView&#xff0c;并且能够实现瀑布流的布局&#xff0c;更加高级并且更加灵活&#xff0c;提供更为高效的回收复用机制&#xff0c;同时实现管理与视图的解耦合。 官方文档解释…

RecyclerView剖析

####简介   本文将从RecyclerView实现原理并结合源码详细分析这个强大的控件。阅读本文要求&#xff1a;1、熟悉android控件绘制&#xff0c;2、了解动画&#xff0c;3、了解Scroller.本文所示源码版本是23.2.0。 ####基本使用   RecyclerView的基本使用并不复杂&#xff…

RecyclerView的使用(一)

目录 1.RecyclerView概述 2.RecyclerView的简单使用 3.改变布局管理器&#xff0c;RecyclerView的变化 1.RecyclerView概述 在谷歌Android官网&#xff0c;给RecyclerView的描述是: 那RecyclerView凭什么要比ListView要更高级&#xff1f;更灵活&#xff1f; 答案是&#x…

RecyclerView详解

RecyclerView 简称 RV&#xff0c; 是作为 ListView 和 GridView 的加强版出现的&#xff0c;目的是在有限的屏幕之上展示大量的内容&#xff0c;因此 RecyclerView 的复用机制的实现是它的一个核心部分。 RV 常规使用方式如下&#xff1a; 解释说明。 setLayoutManager&…