iis服务器助手广告
返回顶部
首页 > 资讯 > 移动开发 >Android RecyclerView详解之实现 ListView GridView瀑布流效果
  • 908
分享到

Android RecyclerView详解之实现 ListView GridView瀑布流效果

recyclerviewlistviewgridviewAndroid 2022-06-06 08:06:53 908人浏览 独家记忆
摘要

 什么是RecyclerView RecyclerView 是Google推出的最新的 替代ListView、GridView的组件,RecyclerView是用来

 什么是RecyclerView

RecyclerView 是Google推出的最新的 替代ListView、GridView的组件,RecyclerView是用来显示大量数据的容器,并通过有限数量的子View,来提高滚动时的性能。

与ListView不同,RecyclerView 不再负责布局,而是专注于布局复用。布局主要通过 LayoutManager来管理,目前提供了3种常用的布局管理:

LinearLayoutManager 线性布局管理器 (ListView效果)
GridLayoutManager 网格布局管理器 (GridView效果)
StaggeredGridLayoutManager 瀑布流管理器
RecyclerView 主要通过Adapter 来获得要显示的子View。Adapter要继承RecyclerView.Adapter类,并且 需要制定一个 RecyclerView.ViewHolder子类的泛型。

使用RecyclerView需要导包,需要在 build.gradle上加入依赖


dependencies { 
compile fileTree(dir: 'libs', include: ['*.jar']) 
compile 'com.Android.support:appcompat-v7:21.0.3' 
compile 'com.android.support:recyclerview-v7:21.0.3' 
... 
} 

代码如下:


//继承自 RecyclerView.Adapter 
class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { 
//RecyclerView显示的子View 
//该方法返回是ViewHolder,当有可复用View时,就不再调用 
@Override 
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { 
View v = getLayoutInflater().inflate(R.layout.recycler_item, null); 
return new ViewHolder(v); 
} 
//将数据绑定到子View,会自动复用View 
@Override 
public void onBindViewHolder(ViewHolder viewHolder, int i) { 
viewHolder.textView.setText(data[i]); 
} 
//RecyclerView显示数据条数 
@Override 
public int getItemCount() { 
return data.length; 
} 
//自定义的ViewHolder,减少findViewById调用次数 
class ViewHolder extends RecyclerView.ViewHolder { 
TextView textView; 
ImageView imageView; 
//在布局中找到所含有的UI组件 
public ViewHolder(View itemView) { 
super(itemView); 
textView = (TextView) itemView.findViewById(R.id.textView); 
imageView = (ImageView) itemView.findViewById(R.id.imageView); 
} 
} 
} 

注意:当数据发生变化时,可以通过notifyDataSetChanged来刷新UI,通过getItemViewType来获取对应位置的类型,但是它不再需要你指定有多少类型了,因为该方法已经能够判断出有多少类型。

子View布局如下:res/layout/recycler


<?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"> 
<ImageView 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:id="@+id/imageView" 
android:src="@drawable/ic_launcher" /> 
<TextView 
android:layout_width="wrap_content" 
android:layout_height="match_parent" 
android:text="Medium Text" 
android:layout_marginLeft="5dp" 
android:gravity="center_vertical" 
android:id="@+id/textView" /> 
</LinearLayout> 

Adapter准备好后,接下来就准备RecyclerView。在Activity的布局中加入RecyclerView


<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" 
tools:context=".MainActivity"> 
<android.support.v7.widget.RecyclerView 
android:id="@+id/recyclerView" 
android:layout_width="match_parent" 
android:layout_height="match_parent" /> 
</RelativeLayout> 

然后在Activity中,加入初始化、设置的代码


@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
//找到 RecyclerView 
RecyclerView recylcer = (RecyclerView) findViewById(R.id.recyclerView); 
//ListView效果的 LinearLayoutManager 
LinearLayoutManager mgr = new LinearLayoutManager(this); 
//VERTICAL纵向,类似ListView,HORIZONTAL<span style="font-family: Arial, Helvetica, sans-serif;">横向,类似Gallery</span> 
mgr.setOrientation(LinearLayoutManager.VERTICAL); 
recylcer.setLayoutManager(mgr); 
//设置适配器 
recylcer.setAdapter(new MyAdapter()); 
} 

运行后的效果如下:

如果要显示为 GridView效果,只用把LinearLayoutManager 换成 GridLayoutManager


//GridLayout 3列 
GridLayoutManager mgr=new GridLayoutManager(this,3); 
recylcer.setLayoutManager(mgr); 

效果如下:

如果要显示效果为 瀑布流,则需要换成 StaggeredGridLayoutManager。


//3列 方向垂直 
StaggeredGridLayoutManager mgr = new StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL); 
recylcer.setLayoutManager(mgr); 

使用瀑布流时,高度最好不一样,所以可以随机设置下子View的高度。修改Adapter中的方法


//将数据绑定到子View 
@Override 
public void onBindViewHolder(ViewHolder viewHolder, int i) { 
viewHolder.textView.setText(data[i]); 
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( 
LinearLayout.LayoutParams.MATCH_PARENT, 
<span style="white-space:pre"> </span>100+(int) (Math.random() * 50)); 
viewHolder.imageView.setLayoutParams(lp); 
} 

运行效果如下:

以上所述是小编给大家介绍的Android RecyclerView详解之实现 ListView GridView瀑布流效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程网网站的支持!

您可能感兴趣的文章:浅谈RecyclerView(完美替代ListView,GridView)Android中实现淘宝购物车RecyclerView或LIstView的嵌套选择的逻辑Android添加图片到ListView或者RecyclerView显示将替代ListView的RecyclerView 的使用详解(一)Android App开发中使用RecyclerView替代ListView的实践Android仿XListView支持下拉刷新和上划加载更多的自定义RecyclerView学习Android Material Design(RecyclerView代替ListView)RecyclerView使用详解(代替ListView)


--结束END--

本文标题: Android RecyclerView详解之实现 ListView GridView瀑布流效果

本文链接: https://www.lsjlt.com/news/24549.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android入门之使用RecyclerView完美实现瀑布流界面详解
    目录前言什么是瀑布流怎么实现瀑布流基于MVVM设计模式的RecyclerView实现瀑布流代码工程整体结构布局后端代码总结正确的做法错误的做法前言 网上充满着不完善的基于Recycl...
    99+
    2023-02-22
    Android RecyclerView实现瀑布流界面 Android RecyclerView瀑布流界面 Android RecyclerView瀑布流
  • Android中FlowLayout组件实现瀑布流效果
    目录FlowLayout实现关键步骤:1、创建一个view继承自ViewGroup2、重写并实现onMeasure方法3、重写并实现onLayout方法总结纸上得来终觉浅,绝知此事要...
    99+
    2024-04-02
  • FlutterStaggeredGridView实现瀑布流效果
    本文实例为大家分享了Flutter StaggeredGridView实现瀑布流的具体代码,供大家参考,具体内容如下 在根目录pubspec.yaml文件中添加依赖 dependen...
    99+
    2024-04-02
  • Android怎么使用RecyclerView实现瀑布流界面
    今天小编给大家分享一下Android怎么使用RecyclerView实现瀑布流界面的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下...
    99+
    2023-07-05
  • Android中FlowLayout组件如何实现瀑布流效果
    这篇文章将为大家详细讲解有关Android中FlowLayout组件如何实现瀑布流效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。纸上得来终觉浅,绝知此事要躬行。动手实践是学习的最好的方式,对于自定义V...
    99+
    2023-06-26
  • 使用js实现瀑布流效果
    本文实例为大家分享了js实现瀑布流效果的具体代码,供大家参考,具体内容如下 源码: <!DOCTYPE html> <html lang="en"> &...
    99+
    2024-04-02
  • JS实现图片瀑布流效果
    本文实例为大家分享了JS实现图片瀑布流的具体代码,供大家参考,具体内容如下 过程: 1、创建一个放所有图片的模块bigblock。 2、获取这个大模块,追加一个子元素块来放小图。 3...
    99+
    2024-04-02
  • JavaScript如何实现瀑布流布局效果
    这篇文章主要讲解了“JavaScript如何实现瀑布流布局效果”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript如何实现瀑布流布局效果”吧!如何实现思路:将内容宽度一致,高度...
    99+
    2023-07-06
  • Flutter StaggeredGridView如何实现瀑布流效果
    这篇文章将为大家详细讲解有关Flutter StaggeredGridView如何实现瀑布流效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体内容如下在根目录pubspec.yaml文件中添...
    99+
    2023-06-29
  • JavaScript实现瀑布流布局详解
    目录需求思路代码实现实现效果问题和修正修正后效果总结需求 所谓瀑布流布局,就是含有若干个等宽的列,每一列分别放置图片、视频等,放置的元素都是等宽的,因此可能是不等高的。新的元素到来时...
    99+
    2024-04-02
  • css和js如何实现瀑布流效果
    小编给大家分享一下css和js如何实现瀑布流效果,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!JS是什么JS是JavaScript的简称,它是一种直译式的脚本语言...
    99+
    2023-06-09
  • 如何使用jquery.masonry实现瀑布流效果
    这篇文章给大家分享的是有关如何使用jquery.masonry实现瀑布流效果的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、分别加载jquery插件与jquery.masonr...
    99+
    2024-04-02
  • 怎么用CSS3实现css多兰瀑布流效果
    本篇内容介绍了“怎么用CSS3实现css多兰瀑布流效果”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!CSS...
    99+
    2024-04-02
  • vue.js组件vue-waterfall-easy如何实现瀑布流效果
    这篇文章主要介绍vue.js组件vue-waterfall-easy如何实现瀑布流效果,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!vue-waterfall-easyeasy! e...
    99+
    2024-04-02
  • Android实现RecyclerView嵌套流式布局的详细过程
    目录前言实现过程效果总结前言 Android开发中,列表页面是常见需求,流式布局的标签效果也是常见需求,那么两者结合的效果啥样呢?这篇文章简单实现一下。 实现过程 添加流式布局依赖,...
    99+
    2022-12-24
    android recyclerview嵌套流式布局 android recyclerview多布局 RecyclerView嵌套
  • HTML5怎样实现图片无限加载瀑布流效果
    这篇文章主要介绍了HTML5怎样实现图片无限加载瀑布流效果,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。代码如下:<!DOCTYPE&...
    99+
    2024-04-02
  • Android项目实战之ListView悬浮头部展现效果实现
    目录实现效果:我们先分析要解决的问题:解决:代码实现:总结实现效果: 先看下效果:需求是 滑动列表 ,其中一部分视图(粉丝数,关注数这一部分)在滑动到顶端的时候不消失,而是停留在整个...
    99+
    2024-04-02
  • Android MVVM架构实现RecyclerView列表详解流程
    目录效果图导入引用导入Recyclerview依赖导入dataBinding引用代码解析建立实体类建立RecyclerView子项适配器建立适配器设置子项点击事件adapter全部代...
    99+
    2024-04-02
  • HTML5怎么实现图片无限加载的瀑布流效果
    本篇内容主要讲解“HTML5怎么实现图片无限加载的瀑布流效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“HTML5怎么实现图片无限加载的瀑布流效果”吧!代码如...
    99+
    2024-04-02
  • 怎么在HTML5中使用canvas实现一个瀑布流文字效果
    今天就跟大家聊聊有关怎么在HTML5中使用canvas实现一个瀑布流文字效果,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。代码如下:<!doctype html>...
    99+
    2023-06-09
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作