1、先创建 activity_water_fall.xml 和 activity_water_fall_item.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:app="http://schemas.android.com/apk/res-auto"
  4. xmlns:tools="http://schemas.android.com/tools"
  5. android:layout_width="match_parent"
  6. android:layout_height="match_parent"
  7. tools:context=".WaterFallActivity">
  8.  
  9. <androidx.recyclerview.widget.RecyclerView
  10. android:id="@+id/rv3"
  11. android:layout_width="match_parent"
  12. android:layout_height="match_parent"
  13. tools:layout_editor_absoluteX="207dp"
  14. tools:layout_editor_absoluteY="62dp" />
  15. </androidx.constraintlayout.widget.ConstraintLayout>
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:app="http://schemas.android.com/apk/res-auto"
  4. xmlns:tools="http://schemas.android.com/tools"
  5. android:layout_width="wrap_content"
  6. android:layout_height="wrap_content"
  7. tools:context=".WaterFallItemActivity">
  8.  
  9. <ImageView
  10. android:id="@+id/imageView"
  11. android:layout_width="wrap_content"
  12. android:layout_height="wrap_content"
  13. android:contentDescription="@string/ivdesc"
  14. app:layout_constraintBottom_toBottomOf="parent"
  15. app:layout_constraintEnd_toEndOf="parent"
  16. app:srcCompat="@drawable/p1" />
  17. </androidx.constraintlayout.widget.ConstraintLayout>

2、创建Adapter

  1. package com.example.myapplication;
  2.  
  3. import android.content.Context;
  4. import android.view.LayoutInflater;
  5. import android.view.View;
  6. import android.view.ViewGroup;
  7. import android.widget.ImageView;
  8.  
  9. import androidx.annotation.NonNull;
  10. import androidx.annotation.WorkerThread;
  11. import androidx.recyclerview.widget.RecyclerView;
  12.  
  13. public class WaterFallAdapter extends RecyclerView.Adapter<WaterFallAdapter.WaterFallViewHolder> {
  14. private Context context;
  15.  
  16. public WaterFallAdapter(Context context) {
  17. this.context = context;
  18. }
  19. @NonNull
  20. @Override
  21. public WaterFallAdapter.WaterFallViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
  22. return new WaterFallViewHolder(LayoutInflater.from(context).inflate(R.layout.activity_water_fall_item,parent,false));
  23. }
  24.  
  25. @Override
  26. public void onBindViewHolder(@NonNull WaterFallAdapter.WaterFallViewHolder holder, int position) {
  27. if(position %2==0) {
  28. holder.iv.setImageResource(R.drawable.p1);
  29. }else{
  30. holder.iv.setImageResource(R.drawable.p2);
  31. }
  32. }
  33.  
  34. @Override
  35. public int getItemCount() {
  36. return 60;
  37. }
  38.  
  39. class WaterFallViewHolder extends RecyclerView.ViewHolder{
  40.  
  41. private ImageView iv;
  42. public WaterFallViewHolder(@NonNull View itemView) {
  43. super(itemView);
  44.  
  45. iv = itemView.findViewById(R.id.imageView);
  46. }
  47. }
  48. }

3、WaterFallActivity.java

  1. package com.example.myapplication;
  2.  
  3. import androidx.appcompat.app.AppCompatActivity;
  4. import androidx.recyclerview.widget.RecyclerView;
  5. import androidx.recyclerview.widget.StaggeredGridLayoutManager;
  6.  
  7. import android.os.Bundle;
  8.  
  9. public class WaterFallActivity extends AppCompatActivity {
  10. private RecyclerView rv;
  11. @Override
  12. protected void onCreate(Bundle savedInstanceState) {
  13. super.onCreate(savedInstanceState);
  14. setContentView(R.layout.activity_water_fall);
  15.  
  16. rv = findViewById(R.id.rv3);
  17. rv.setLayoutManager(new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL));
  18. rv.setAdapter(new WaterFallAdapter(WaterFallActivity.this));
  19. }
  20. }

ps:图片路径,直接复制到drawable目录里面:

4、效果:

android RecyclerView的瀑布流布局案例的更多相关文章

  1. Android RecyclerView(瀑布流)水平/垂直方向分割线

     Android RecyclerView(瀑布流)水平/垂直方向分割线 Android RecyclerView不像过去的ListView那样随意的设置水平方向的分割线,如果要实现Recycle ...

  2. RecyclerView实现瀑布流布局

    RecyclerView本身提供了三个LayoutManager的实现 LinearLayoutManager GridLayoutManager StaggeredGridLayoutManager ...

  3. android RecyclerView的Grid布局案例

    1.先创建activity_grid.xml 和 activity_grid_item.xml <?xml version="1.0" encoding="utf- ...

  4. android RecyclerView的Linear布局案例

    1.先创建 activity_recycle_view.xml 和 activity_recycler_linear_item.xml 如下: <?xml version="1.0&q ...

  5. 基于RecyclerView的瀑布流实现

    fragment的布局: <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xm ...

  6. 【Android】14.0 UI开发(五)——列表控件RecyclerView的瀑布布局排列实现

    1.0 列表控件RecyclerView的瀑布布局排列实现,关键词StaggeredGridLayoutManager LinearLayoutManager 实现顺序布局 GridLayoutMan ...

  7. JS案例之6——瀑布流布局(1)

    在实际的项目中,偶尔会用到一种布局——瀑布流布局.瀑布流布局的特点是,在多列布局时,可以保证内容区块在水平方向上不产生大的空隙,类似瀑布的效果.简单的说,在垂直列表里,内容区块是一个挨着一个的.当内容 ...

  8. Android RecyclerView初体验

    很早之前就听说过RecyclerView这个组件了,但一直很忙没时间学习.趁着周末,就花了一天时间来学习RecyclerView. 准备工作 在Android Studio里新建一个Android项目 ...

  9. Android RecyclerView与ListView比较

    RecyclerView 概述 RecyclerView 集成自 ViewGroup .RecyclerView是Android-support-V7版本中新增的一个Widgets,官方对于它的介绍是 ...

随机推荐

  1. DELPHI无类型参数

    DELPHI无类型参数 有不少Delphi新手对过程(函数)的无类型参数感到困惑,不知该传递什么类型.其实,Delph中有不少这类无类型参数,如常用的Move过程,只要把它当着一个Byte类型的数组看 ...

  2. em,rem,px的区别,以及实现原理?

    px像素(Pixel).相对长度单位.像素px是相对于显示器屏幕分辨率而言的.em是相对长度单位.相对于当前对象内文本的字体尺寸举个例子:比如说当前容器`font-size:16px;`则`1em`就 ...

  3. Facets:一款Google开源机器学习数据集可视化工具

    Homepage/演示网站:https://pair-code.github.io/facets/ Pypi:https://pypi.org/project/facets-overview/ Git ...

  4. 使用 Spring Cloud Sleuth、Elastic Stack 和 Zipkin 做微服务监控

    关于迁移微服务架构,最常被提及的挑战莫过于监控.每个微服务应独立于其他服务的运行环境,所以他们之间不会共享如数据源.日志文件等资源. 然而,较容易的查看服务的调用历史,并且能够查看多个微服务的请求传播 ...

  5. 【Redis】Redis 事务

    Redis 事务介绍 Redis 事务可以一次执行多个命令, 并且带有以下三个重要的保证: 批量操作在发送 EXEC 命令前被放入队列缓存. 收到 EXEC 命令后进入事务执行,事务中任意命令执行失败 ...

  6. Python3 queue队列类

    class queue.PriorityQueue(maxsize=0) 优先级队列构造函数. maxsize 是个整数,用于设置可以放入队列中的项目数的上限.当达到这个大小的时候,插入操作将阻塞至队 ...

  7. [转]MathJax与LaTex公式简介

    链接地址:https://www.cnblogs.com/linxd/p/4955530.html

  8. Java分布式定时任务

    分布式定时任务 elastic-job 可以实现任务分片 quartz 可以把任务存入数据库,实时生成任务(添加数据库添加定时任务) 文档 中文翻译 翻译2

  9. 【视频开发】【电子电路技术】监控球机PTZ的功能介绍

    主要分模拟球机和网络球机两种 1.模拟球机 模拟球机除了需要接电源外,还需要接视频线和485控制线才能实现视频传输和云台控制,并且需要配置波特率,地址位和协议. 升级版:HDTVI球机 ① 同轴视控. ...

  10. Windows常用网络命令(3)

    5.Netstat Netstat命令可以帮助网络管理员了解网络的整体使用情况.它可以显示当前正在活动的网络连接的详细信息,例如显示网络连接.路由表和网络接口信息,可以统计目前总共有哪些网络连接正在运 ...