Android学习之RecyclerView的使用

article/2025/11/10 16:46:47

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

A flexible view for providing a limited window into a large data set.

        我将通过演示一个简单的例子让大家来感受RecyclerView的魅力。
        1.添加依赖
        1.1打开File —> Project Structure或点击快捷图标或者快捷键ctrl+shift+alt+s
        在这里插入图片描述
在这里插入图片描述
        1.2选中app —> Dependencies —> 点击加号 —> Library dependence
在这里插入图片描述

        1.3在选择框中输入recyclerview,选择v7包
        在这里插入图片描述
        在这里插入图片描述
        在这里插入图片描述

        1.4成功添加
在这里插入图片描述
在这里插入图片描述
        2.添加布局
        在activity_main.xml中添加如下代码

<android.support.v7.widget.RecyclerViewandroid:id="@+id/recycler_view"android:layout_width="match_parent"android:layout_height="match_parent"></android.support.v7.widget.RecyclerView>

        3.新建一个item_dome.xml,为RecyclerView内的元素设定xml样式

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:orientation="vertical" android:layout_width="match_parent"android:layout_height="50dp"><TextViewandroid:id="@+id/text_view"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:text="测试"android:layout_marginRight="1dp"android:layout_marginLeft="1dp"android:layout_marginTop="1dp"android:layout_marginBottom="1dp"android:textColor="@android:color/holo_red_dark"android:background="@android:color/holo_blue_dark" />
</LinearLayout>

        4.创建适配器继承RecyclerView.Adapter
        步骤:
        1.创建适配器类继承自RecyclerView.Adapter,泛型传入RecyclerView.ViewHolder类。
        2.创建内部类即RecyclerView.ViewHolder类的子类,并初始化item的控件。
        3.重写RecyclerView.Adapter类的相关方法。

package lession.example.com.recyclerviewdemo;import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import java.util.List;/*① 创建一个继承RecyclerView.Adapter<VH>的Adapter类② 创建一个继承RecyclerView.ViewHolder的静态内部类③ 在Adapter中实现3个方法:onCreateViewHolder()onBindViewHolder()getItemCount()*/
public class RecycleAdapterDome extends RecyclerView.Adapter<RecycleAdapterDome.MyViewHolder>{private Context context;private List<String> list;private View inflater;//构造方法,传入数据public RecycleAdapterDome(Context context, List<String> list){this.context = context;this.list = list;}@Overridepublic MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {//创建ViewHolder,返回每一项的布局inflater = LayoutInflater.from(context).inflate(R.layout.item_dome,parent,false);MyViewHolder myViewHolder = new MyViewHolder(inflater);return myViewHolder;}@Overridepublic void onBindViewHolder(MyViewHolder holder, int position) {//将数据和控件绑定holder.textView.setText(list.get(position));}@Overridepublic int getItemCount() {//返回Item总条数return list.size();}//内部类,绑定控件class MyViewHolder extends RecyclerView.ViewHolder{TextView textView;public MyViewHolder(View itemView) {super(itemView);textView = (TextView) itemView.findViewById(R.id.text_view);}}
}

        5.MainActivity.java中
        步骤:
        1.获取RecyclerView对象 。
        2.初始化数据 。
        3.适配器实例化 。
        4.设置LayoutManager
        5. 设置Adapter 。

package lession.example.com.recyclerviewdemo;import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {private RecyclerView recyclerView;//声明RecyclerViewprivate RecycleAdapterDome adapterDome;//声明适配器private Context context;private List<String> list;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);context = this;setContentView(R.layout.activity_main);recyclerView = (RecyclerView) findViewById(R.id.recycler_view);list = new ArrayList<>();for (int i=0;i<10;i++){list.add("这是第"+i+"个测试");}//adapterDome = new RecycleAdapterDome(context,list);/*与ListView效果对应的可以通过LinearLayoutManager来设置与GridView效果对应的可以通过GridLayoutManager来设置与瀑布流对应的可以通过StaggeredGridLayoutManager来设置*///LinearLayoutManager manager = new LinearLayoutManager(context,LinearLayoutManager.VERTICAL,false);LinearLayoutManager manager = new LinearLayoutManager(context);manager.setOrientation(LinearLayoutManager.VERTICAL);//RecyclerView.LayoutManager manager = new LinearLayoutManager(context,LinearLayoutManager.VERTICAL,false);//GridLayoutManager manager1 = new GridLayoutManager(context,2);//manager1.setOrientation(GridLayoutManager.VERTICAL);//StaggeredGridLayoutManager manager2 = new StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL);recyclerView.setLayoutManager(manager);recyclerView.setAdapter(adapterDome);}
}

        运行结果:
        在这里插入图片描述

        这就是RecyclerView的简单使用,如果转载以及CV操作,请务必注明出处,谢谢!


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

相关文章

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&…

RecyclerView(三)—— RecyclerView的缓存机制

RecyclerView内存优越性&#xff0c;得益于它独特的缓存机制。 1 如何复用表项 如果列表中的每个表项在移出屏幕时被销毁&#xff0c;移入时又被重新创建&#xff0c;是很消耗资源&#xff0c;所以RecyclerView引入了缓存机制。缓存是为了复用&#xff0c;复用的好处是有可能…

RecyclerView详解一,使用及缓存机制

本文大致会先讲解RecyclerView的基础知识及使用&#xff0c;最后会深入讲解一点原理。当然&#xff0c;本人知识水平有限哈&#xff0c;太深入的东西我现在还没接触到&#xff0c;还请大家包容&#xff0c;阿里嘎多~ 一、RecyclerView的历史与发展 既然讲到了RV&#xff0c;那…

Android开发—RecyclerView使用

1.RecyclerView是什么 RecyclerView 在Android中用于创建列表。 官网的解释为&#xff1a; RecyclerView 可以让您轻松高效地显示大量数据。您提供数据并定义每个列表项的外观&#xff0c;而 RecyclerView 库会根据需要动态创建元素。 当RecyclerView的列表项滚出屏幕的时候&a…

Android RecyclerView使用简述

RecyclerView使用简述 前言正文一、创建项目二、RecyclerView基本使用① item布局和适配器② 显示数据③ 添加Item点击事件④ 添加Item子控件点击事件⑤ 添加长按事件⑥ 多个子控件点击事件 三、RecyclerView ViewBinding使用① 适配器② 显示数据③ 添加控件点击和长按 四、R…

es6新特性总结及使用说明

目录 简介 新特性说明 let语法 const语法 解构赋值 模板字符串 对象简写 对象操作--深拷贝 箭头函数 小结 简介 1. ECMAScript 6.0是 JavaScript 语言的下一代标准&#xff0c; 2015 年 6 月发布。 ES6 设计目标是达到 JavaScript 语言可以用来编写复杂的大型程序&a…

ES6有哪些新特性

ES6有哪些新特性(1)变量声明:由var变为let和const; (2)模板字符串:使用反引号;在模板字符串里面支持换行,并可以在里面使用${}来包裹一个变量或表达式; (3)解构:有数组解构和对象解构;可以快速获取数组和对象的值; (4) 展开运算符:在ES6中用…来表示展开运算符,它可以将数组…

ES6 新特性知识点总结

文章目录 ES6let及const解构赋值模板字符串Symbol类型Set和Map数据结构箭头函数类 ES6 ES 的全称是 ECMAScript , 它是由 ECMA 国际标准化组织,制定的一项脚本语言的标准化规范。 ES6 实际上是一个泛指&#xff0c;泛指 ES2015 及后续的版本。 每一次标准的诞生都意味着语言的…

ES6 新特性

1 、ES6 新特性 现在使用主流的前端框架中&#xff0c;如ReactJS、Vue.js、angularjs等&#xff0c;都会使用到ES6的新特性&#xff0c;作为一名高级工程师而言&#xff0c;ES6也就成为了必修课&#xff0c;所以本套课程先以ES6的新特性开始。 1.1、了解ES6 ES6&#xff0c;…

ES6新特性总结-面试必会

文章目录 一、let和const二、Symbol三、模板字符串3.1 什么是模板字符串3.2 字符串新方法 四、解构表达式4.1 数组解构4.2 对象解构 五、Set()、map()数据结构5.1 map()是什么及写法&#xff1f;5.1.1 map()是什么及写法&#xff1f;5.1.2 map()下的内置方法&#xff1a; 5.2 S…

JavaScript ES6新特性

JavaScript ES6带来了新的语法和特性&#xff0c;使得代码更加的现代和可读。它包括许多重要功能&#xff0c;如箭头函数、模板字符串、解构赋值等等。 const 和 let const 是 ES6 中用于声明变量的新关键字。const 比 var 强大。一旦使用&#xff0c;变量就不能重新分配。换…

ES6必须知道的六大新特性

ES6 ES6新特性-let&const 使用const表示常量&#xff08;声明之后不允许改变&#xff0c;一旦声明必须初始化&#xff0c;否则会报错&#xff09; //ES6 常量 不能修改const b2;b3;//Uncaught TypeError: Assignment to constant variable.console.log(b);使用var声明的…

ES6中有哪些新特性?

ES6中的新特性(一) ECMAScript6.0&#xff08;以下简称 ES6&#xff09;是 JavaScript 语言的下一代标准&#xff0c;已经在 2015 年 6 月正式发布了。它的目标&#xff0c;是使得 JavaScript 语言可以用来编写复杂的大型应用程序&#xff0c;成为企业级开发语言。 我们来看看…

面试题!es6新特性

es6新特性 ECMAScript 6(ES6) 目前基本成为业界标准&#xff0c;它的普及速度比 ES5 要快很多&#xff0c;主要原因是现代浏览器对 ES6的支持相当迅速&#xff0c;尤其是 Chrome 和 Firefox 浏览器&#xff0c;已经支持 ES6 中绝大多数的特性。 以下是一些常用到的es6新特性&…

es6的8条新特性总结

es6的8条新特性总结 认识es61.块级作用域变量&#xff08;let和const&#xff09;2.箭头函数3.模板字符串4.解构赋值5.默认参数6. 扩展运算符7. 类和继承8.Promise 认识es6 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript的新版本&#xff0c;引入了许多新特性和语法…

最全的—— ES6有哪些新特性?

目录 ES6新特性1、let和const2、symbol3、模板字符串3.1 字符串新方法&#xff08;补充&#xff09; 4、解构表达式4.1 数组解构4.2 对象解构 5、对象方面5.1 Map和Set5.1.1 Map5.1.2 Set 5.3 数组的新方法5.3.1 Array.from()方法5.3.2 includes()方法5.3.3 map()、filter() 方…

GWAS分析中协变量的区分(性别?PCA?初生重?)

1. 电子书领取 前几天发了一篇GWAS电子书分享&#xff0c;异常火爆&#xff0c;阅读量8000&#xff0c;很多人评价比较基础。这本电子书主要特点是比较基础&#xff0c;GLM模型用软件和R语言进行比较&#xff0c;如何添加数字协变量、因子协变量、PCA等内容&#xff0c;可以说…

时间序列 工具库学习(5) Darts模块-多个时间序列、预训练模型和协变量的概念和使用

1.实验目的 此笔记本用作以下目的&#xff1a; 在多个时间序列上训练单个模型使用预训练模型获取训练期间未见的任何时间序列的预测使用协变量训练和使用模型 2.导库 # fix python path if working locally from utils import fix_pythonpath_if_working_locallyfix_python…