Android RecyclerView使用

安卓RecyclerView和Adapter 阅读详情

讲解:
那么有了ListView、GridView为什么还需要RecyclerView这样的控件呢?
整体上看RecyclerView架构,提供了一种插拔式的体验,高度的解耦,异常的灵活,通过设置它提供的不同LayoutManager,ItemDecoration , ItemAnimator实现令人瞠目的效果。
  • 你想要控制其显示的方式,请通过布局管理器LayoutManager
  • 你想要控制Item间的间隔(可绘制),请通过ItemDecoration
  • 你想要控制Item增删的动画,请通过ItemAnimator
  • 你想要控制点击、长按事件,请自己写!
为了使用RecyclerView控件,我们需要创建一个Adapter和一个LayoutManager:
Adapter:集成自RecyclerView.Adapetr类,主要用来将数据和布局item进行绑定。
LayoutManager:布局管理器,设置每一项view在RecyclerView中的位置布局以及控件item view的显
RecyclerView提供了三种内置的LayoutManager:
  1. LinearLayoutManager:线性布局,横向或者纵向滑动列表
  2. GridLayoutManager:表格布局
  3. StaggeredGridLayoutManager:流式布局
Animations(动画)效果:
RecyclerView对于Item的添加和删除是默认开启动画的。我们当然也可以通过RecyclerView.ItemAnimator类定制动画,然后通过RecyclerView.setItemAnimator()方法来进行使用。










 RecyclerView 是在Android5.0之后推出的,是一个比ListView更加灵活更加高效的适配器类型控件。但是RecyclerView不同于其他类型的适配器,它还需要一个LayoutManager进行页面控制展示。RecyclerView提供了三种布局管理器:
  1、LinearLayoutManager:线性布局管理器,支持水平和垂直效果。
  2、GridLayoutManager:网格布局管理器,支持水平和垂直效果。
  3、StaggeredGridLayoutManager:分布型管理器,瀑布流效果

RecyclerView的使用:
  1、引入RecyclerView依赖包,V7下的,兼容到API17.
  2、在xml布局中声明,在Java代码中初始化。
  3、设置布局管理器
  4、创建适配器,设置数据源,绑定适配器
    具体创建适配器:①创建一个类,继承RecyclerView.Adapter<ViewHolder>.
            ②创建一个类ViewHolder,继承RecyclerView。VIewHolder,该类需要创建一个匹配父类的构造。
            ③重写适配器中的方法:getItemCount():获取数据源的个数(item的数量);onCreateViewHolder():该方法中导入布局,实例化VIewHolder;onBindViewHolder():绑定VIewHolder,加载数据。
注意一点:RecyclerView的LinearLayoutManager不同于一般的适配器的布局,RecyclerView的item最外层的布局参数是有效的,如高度宽度等,所以在使用的时候,第一种方法是在导入View的时候指定没有parent(不推荐使用),第二种方法是在item布局的最外层指定具体的参数。
RecyclerView 为开发者提供了强大的复用机制,但是所有的点击事件都丢了,没有提供默认的点击事件,所以需要我们自己为RecyclerView手动实现点击。


添加依赖

compile 'com.android.support:mediarouter-v7:25.0.0'

    compile 'com.android.support:appcompat-v7:25.0.0'

    compile 'com.android.support:recyclerview-v7:25.0.0'

布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent" >

<android.support.v7.widget.RecyclerView

android:id="@+id/id_recyclerview"

android:divider="#ffff0000"

android:dividerHeight="10dp"

android:layout_width="match_parent"

android:layout_height="match_parent" /></RelativeLayout>

代码:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    initData();
    mRecyclerView = (RecyclerView) findViewById(R.id.id_recyclerview);
    //瀑布流
    mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(4,StaggeredGridLayoutManager.VERTICAL));
    //默认
    //mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
    //mRecyclerView.setLayoutManager(new GridLayoutManager(this,4));
    //分割线
    mRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.HORIZONTAL));
    mRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));
    mRecyclerView.setAdapter(mAdapter = new HomeAdapter());
class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.MyViewHolder>
{

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
    {
        MyViewHolder holder = new MyViewHolder(LayoutInflater.from(MainActivity.this).inflate(R.layout.item, parent, false));
        return holder;
    }

    @Override
    public void onBindViewHolder(MyViewHolder holder, int position)
    {
        holder.tv.setText(mDatas.get(position));
    }

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

    class MyViewHolder extends RecyclerView.ViewHolder
    {

        TextView tv;

        public MyViewHolder(View view)
        {
            super(view);
            tv = (TextView) view.findViewById(R.id.id_num);
        }
    }
}


安卓之RecyclerView只点击RecyclerView不点击Item 今天讲一下RecyclerView这个控件,使得不点击里面的item,只点击RecyclerView,写了demo随便看看哈~~~ 首先先分析为什么我们设置了Recyclerview.setOnClickListener确没办法响应。其实可以看一下源码。 里面源码有这个也有点击事件的。其实直观的分析其实就是点击事件在item里面所以不在RecyclerView,导致RecyclerVi 阅读详情

相关推荐

安卓的RecyclerView应用

RecyclerView前言一、依赖的导入二、RecyclerView的Item视图编写三、RecyclerView适配器的编写1、设置返回的视图2、设置数据绑定和返回数量3、在控件中设置这个适配器实现效果总结 前言 更多内容请访问酒易的个人博客 本章主要讲述RecyclerView的适配器的设置 一、依赖的导入 RecyclerView是需要导入依赖的,请添加以下代码: implementation 'androidx.recyclerview:recyclerview:1.1.0' 二、

ziyouc520的博客 261

RecyclerView实现ViewPager效果以及自定义View

一.效果图与需求 需求就是图中的效果,最大的那个item是选中的item,其余的是普通的item,并且滑动过程中随收视伴随item缩放的效果,先声明下,这个不是动画效果,只是根据手势滑动的距离不断设置item缩放的比例。 二.实现思路与需求分析 1.需求分析 刚开始想这个效果是不是可以用属性动画中的缩放动画实现,但是用动画实现的话需要设置动画的执行时间,ValueAnimator只...

刘旭 1558

Android RecyclerView

1.RecyclerView RecyclerView是Android 5.0推出的,是support-v7包中的新组件,它被用来代替ListView和GridView,并且能够实现瀑布流的布局,更加高级并且更加灵活,提供更为高效的回收复用机制,同时实现管理与视图的解耦合。RecyclerView提供了一种插拔式的体验,高度的解耦,异常的灵活,只需设置其提供的不同的LayoutManager,ItemAnimator和ItemDecoration,就能实现不同的效果。 RecyclerView的优点: ①支

zenmela2011的专栏 1万+

Android开发——RecyclerView特性以及基本使用方法(一)

0. 前言随着Android的发展,虽然ListView依旧重要,但RecyclerView确实越来越多的被大家使用。但显然并不能说RecyclerView就一定优于ListView,而是应该根据不同的需求选择最合适的进行使用。本篇将介绍我们为什么要使用RecyclerView,并且它的基本使用方法。本文原创,转载请注明出处为SEU_Calvin的博客。1. 我们为什么要使用Recycl...

weixin_30483495的博客 406

实用工具系列 - Xshell安装下载与使用

一、介绍 二、下载 三、安装 四、使用

Passerby_Wang的博客 1万+

自定义LayoutManager实现android-pile-layout滑动卡片堆叠效果

这是我的第一篇博客,总算有个契机开始写博客了,就从自定义LayoutManager开始吧。 前段时间看到一个项目(android-pile-layout),效果特别不错,这是效果图: 效果确实不错,我看了下实现,是用的自定义的ViewGroup实现的,计算什么还搞的挺复杂的,具体的没细看。作者说也尝试过用LayoutManager实现,但是没找到合适的数学模型,好吧,看到数学模型我

u014296305的博客 1万+

使用RecyclerView

RecyclerView 是一种新的ViewGroup 用来生成基于适配器的view的方式,可以看作是ListView 和GridView 的方式,优势在于RecyclerView拥有更加可扩展的矿建,而且提供了生成水平和垂直布局的能力。当你的数据集合动态的根据用户的动作或者网络事件而改变时推荐使用。 - RecyclerView.Adapter :处理数据集合并且将数据绑定到视图上 - Lay

waynee 1489

手把手教学|用飞书+扣子工作流实现自动化批量图片生成,效率提升99%!体验完整操作流程

在先前的文章中,我们已经深入探讨了扣子智能体的多种应用场景,以及如何创建和使用工作流进行高效管理。本文将引领大家通过一个具体案例,将扣子的工作流功能嵌入飞书应用中,实现操作的自动化与高效化。

weixin_66485800的博客 6028

RecyclerVeiw使用知识汇总

由于本篇篇幅特长,特意做了个目录,让大伙对本篇内容先有个大概的了解。 另外,由于有些平台可能不支持[TOC]解析,所以建议大伙可借助本篇目录,或平台的目录索引进行快速查阅。 LayoutManager 1.1LinearLayoutManager 基本效果介绍 findFirstCompletelyVisibleItemPosition() findFirstVisibleItemPosition() findLastCompletelyVisibleItemPositi...

我的专栏 814

PostGIS 小白入门详细指南

PostGIS 是 PostgreSQL 的一个扩展,它将 PostgreSQL 转变为一个功能强大的空间数据库,使其能够存储、查询和分析地理空间数据。PostGIS 遵循开放地理空间联盟(OGC)的标准,支持各种空间数据类型和操作,如点、线、多边形、缓冲区、空间连接等。存储各种空间数据类型(如几何类型和地理类型)空间索引,提高查询性能丰富的空间函数和操作支持投影和坐标系统转换城市规划与管理环境监测与分析物流与运输优化地图制作与可视化位置服务与导航。

落魄书生的职业学习生涯 1万+

指纹浏览器指纹工厂(下):基于真实设备数据特征的马尔可夫链生成与校验

本文揭示了静态指纹生成算法在高级风控时序追踪下的致命缺陷,指出违背设备演进马尔可夫性质(如无状态跳跃、因果断裂)是导致指纹存活率骤降的核心原因。通过分析风控系统的时序状态机与多维特征验证机制,提出基于隐马尔可夫模型(HMM)的动态指纹架构:以真实设备的状态转移链为蓝本,构建异步演进的“数字基因熔炉”,通过非均匀时间步长、突发事件响应及微观因果绑定,模拟软硬件独立更新的物理法则。最终实现指纹在时间维度与微观特征上的自洽,规避风控的时序陷阱。

数据知道的博客 416

探索CityPickerRecyclerVeiw:一款高效的城市选择组件

探索CityPickerRecyclerVeiw:一款高效的城市选择组件 在开发移动应用时,尤其是在需要用户输入地址或选择城市的情境中,一个直观、易用且高效的组件至关重要。就是这样一款专为Android开发者设计的项目,它采用RecyclerView实现,提供了流畅的城市选择体验。 项目简介 CityPickerRecyclerVeiw是一款基于RecyclerView的Android城市选择器,...

gitblog_00057的博客 345

万字长文:YOLOv5+RK3588 NPU多线程加速全攻略——从理论到部署的终极优化

RK3588 NPU多线程加速优化教程摘要 本教程深入讲解了如何利用线程池技术优化RK3588 NPU上的YOLO目标检测模型推理性能。RK3588内置3个NPU核心,理论算力达6TOPS,为多线程优化提供了硬件基础。教程详细解析了线程池的核心组件(任务队列、工作线程、同步机制)和实现架构,包括类设计、初始化流程、工作线程逻辑(任务获取、NPU推理、结果存储三个阶段)以及任务提交/获取机制。通过预分配模型实例、线程绑定、流量控制等优化手段,实现了从单线程28FPS到多线程120FPS的显著性能提升,为边缘A

LXY_LOVE36的博客 1101

安卓的那些事儿-android之RecyclerView的使用,实现列表横向滚动

《安卓的那些事儿》      方便自己记忆,也为了方便一些人像我一样到处找方法,把自己平时碰到的一些写代码的事儿记下来,可能也会把一些对安卓使用的看法记下来,或许会很啰嗦,但我保证,肯定都是实用的。          安卓做垂直方向的Litview列表滚动,这个简单,随便一搜一大堆,但实现横向滚动,这个貌似就没那么容易,一开始其实我也是懵逼的,后来看到有人说使用RecyclerView可以实

fengwang61的博客 2740

Python 爬虫实战:Twitter 数据定向抓取(特定话题 + 用户推文爬取与分析)

在社交媒体研究、舆情监测和市场分析等领域,Twitter 数据具有极高的价值。本文将详细介绍如何使用 Python 构建一个完整的 Twitter 数据爬取系统,包括特定话题和用户推文的爬取与分析。我们将涵盖从认证到数据存储、清洗、分析和可视化的全流程。

u014481728的博客 1035

11、机器学习中的聚类与隐马尔可夫模型

本文介绍了机器学习中的两种重要方法:聚类算法和隐马尔可夫模型(HMM)。聚类作为无监督学习的代表,适用于发现无标签数据中的结构,常见算法包括K-均值和自组织映射(SOM),并在传感器数据分析等场景中展现应用价值。隐马尔可夫模型则是一种可解释的序列模型,用于从观测数据中推断隐藏状态,广泛应用于语音识别、自然语言处理和生物信息学等领域。文章详细讲解了HMM的核心概念如马尔可夫性质、转移与发射概率,并通过TensorFlow实现了前向算法,展示了其计算观测序列概率的动态规划思想。最后对比了两类方法的应用场景,展望

garlic的博客 179

Android 安卓RecyclerView显示本地视频并播放

activity_main     xmlns:app="http://schemas.android.com/apk/res-auto"     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"     android:layout_height="ma

無趣的博客 1877

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Android安卓 RecyclerView 简单实现 超详细解释!!!

RecyclerView:优于ListView的一个List显示工具,较ListView复杂一些,但是代码套路比较固化。RecyclerView有三种模式,ListView(列表形式),StaggeredView(瀑布形式),GridView(表格形式)这里先用ListView做一个简单的阐述,之后再细说三种形式其实三种形式大致相同共通性强 使用步骤: 定义并设置Adapter适配器,定义设置LayoutManager布局管理器。 使用准备:设置 itemViewLayout 和 mainlayout 以及

m0_51517626的博客 3255

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

安卓Android RecyclerView的使用

5、在Activity/Fragment等中的调用,这里设置的是线性布局中的水平布局,也就是只有一行,当点击每个Item/每个Item里的按钮时,会调用showMenuDetailView方法。1、自定义通用的RecyclerView类。3、根据自己的需求,确定每个item的布局。(2)创建 ViewHolder 的方法。(3)绑定数据到 ViewHolder。2、在xml文件中,定义布局。4、适配器Adapter。(1)设置点击事件监听器。

m0_54198552的博客 585

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Android 安卓开发之 Tablayout + ViewPager + RecyclerView

Android 安卓开发之 Tablayout + ViewPager + RecyclerView ViewPager 是安卓开发中的一个非常重要的工具,用于实现页面切换,滑动变化等,今天就来实现一下用Tablayout和ViewPager来实现一个比较好的效果 首先看一下效果 接下来直接上代码: 首先修改我们的首页面布局,加入Tablayout 和ViewPager <?xm...

孑桀 1556

安卓RecyclerView与DrawerLayout的简单应用

RecyclerView android中有一个组件叫做RecyclerView,用它可以实现横向滑动的ListView列表,还可以实现瀑布流等多种炫酷的功能。      使用RecyclerView的流程是:创建一个RecyclerView界面,然后再创建一个RecycleViewAdapter适配器,创建一个布局管理器,就可以运用RecyclerView了。      public

2880

android中RecyclerView的简单使用(四),安卓多线程面试题

else{});//判断底部视图加载状态((FooterHolder) holder).mtv.setText(“正在加载更多数据…”);break;((FooterHolder) holder).mtv.setText(“没有更多数据了…”);break;@Override//根据viewHolder判断布局的加载super(v);super(v);

m0_60567881的博客 968

安卓Android Studio详解build.gradl文件RecyclerView

备注:此备注将会存在本人的每一条博客,将会定期更改 1、使用的软件是Android studio 版本是3.4.2 今天学到RecyclerView,需要添加gradle依赖,搞了一天还是懵懵懂懂的,虽然做好了但不知其所以然,所以去重头查了一遍 首先,是安卓的版本,图是在网上找的 接下来是文件里的属性,一般有两个build.gradle 我们一般在app里面的进行更改以及添加依赖的操作,事实上,...

季小心的博客 441

[Android]【安卓】RecyclerView Items间隔设置

[Android]【安卓】RecyclerView Items间隔设置 本篇博客已收录到我的安卓开发小结中——点击【安卓开发小结】 参考资料:Android Recyclerview GridLayoutManager column spacing 有时候会有这样的需求,RecycleView的第一个Item距离左边屏幕20px,最后一个Item距离右边屏幕20px,中间Items间隔6...

Hy的博客 1375

安卓RecyclerView的使用以及抽取基类

安卓RecyclerView的使用以及抽取基类1.引入:在moudle中的build.gradle文件里,找到dependencies,添加关于recyclerView的引用:compile 'com.android.support:recyclerview-v7:24.2.0' //这里的版本需要和V7包相对其实design包中含有Material Design相关的很多控件,其中也包括了rec

qq_38605423的博客 1120

Android RecyclerView滚动定位

RecyclerView在安卓开发中非常实用,而且简单易用,但是在实际开发中一直有一个问题困扰着我,就是定位问题,实际的项目中总是会遇到这样的需求:检索RecyclerView的某一项(各个项的高度不确定),然后定位这一项,将它显示在顶部。用RecyclerView的默认移动的方法并不能实现这一点(个人感觉官方可能出于性能考虑才不实现这一点)。这篇博客就讲解下我个人是如何实现这个需求的。

M家杰的博客 7万+
上一篇: okhttp
下一篇: 属性动画简单操作
Plee.
博客等级 码龄9年 21粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值