RecyclerView介绍(四)----实现瀑布流效果

RecyclerView 实现瀑布流的正确姿势 首先来看一下瀑布流效果: 加载的数据根据自己需求自己定义。 来说一下具体实现: private RecyclerView rlv; private FlashApapter mAdapter; //设置layoutManager StaggeredGridLayoutManager manager = new StaggeredGridLayoutManager(2, Stagger... 阅读详情

瀑布流也是我们经常要实现的一个效果 通过RecyclerView实现瀑布流的效果也十分的简单,
具体代码如下实现:
Activity:

package demo.yangzc.com.recycledemo;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
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 android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;

import java.util.ArrayList;
import java.util.List;

public class StaggeredDemoActivity extends AppCompatActivity {

    private RecyclerView mRecyclerView;
    private List<String> mDatas;
    private StaggeredAdapter mAdapter;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_recycle_demo);


        initViews();
        initDatas();


    }

    private void initViews() {
        mRecyclerView = (RecyclerView) findViewById(R.id.recyclerview);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
    }

    private void initDatas() {
        mDatas = new ArrayList<String>();
        for (int i = 'A'; i <= 'z'; i++) {
            mDatas.add("" + (char) i);
        }
        mAdapter = new StaggeredAdapter(this, mDatas);
        mRecyclerView.setAdapter(mAdapter);
        //设置RecyclerView的布局管理
        // 1.上下文 2.放向 3.是否反向布局
        StaggeredGridLayoutManager linearLayoutManager = new StaggeredGridLayoutManager(5, StaggeredGridLayoutManager.VERTICAL);
        mRecyclerView.setLayoutManager(linearLayoutManager);
        //设置RecycView的Item间的分割线
//        mRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL_LIST));

    }}

Adapter:

package demo.yangzc.com.recycledemo;

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.ArrayList;
import java.util.List;

/**
 * @author yangzc
 * @data 2015/12/1 20:36
 * @desc 瀑布流的Adapter
 */
public class StaggeredAdapter extends RecyclerView.Adapter<StaggeredMyViewHoder> {
    //用于每个item的布局
    private LayoutInflater mInflater;
    private Context mContext;
    private List<String> mDatas;
    //瀑布流控制高度
    private List<Integer> mHeights;

    @Override
    //创建ViewHoler
    public StaggeredMyViewHoder onCreateViewHolder(ViewGroup parent, int viewType) {
        //item布局
        View view = mInflater.inflate(R.layout.item_simple_textview, parent, false);
        //传入item布局
        StaggeredMyViewHoder staggeredMyViewHoder = new StaggeredMyViewHoder(view);
        return staggeredMyViewHoder;
    }

    @Override
    //绑定ViewHolder
    public void onBindViewHolder(StaggeredMyViewHoder holder, int position) {
        ViewGroup.LayoutParams layoutParams = holder.itemView.getLayoutParams();
        layoutParams.height = mHeights.get(position);
        holder.itemView.setLayoutParams(layoutParams);
        holder.textView.setText(mDatas.get(position));
    }


    @Override
    public int getItemCount() {
        return mDatas == null ? 0 : mDatas.size();
    }

    public StaggeredAdapter(Context context, List<String> datas) {
        this.mContext = context;
        this.mDatas = datas;
        mInflater = LayoutInflater.from(context);
        mHeights = new ArrayList<Integer>();
        for (int i = 0;i<mDatas.size();i++){
                mHeights.add((int) (100+Math.random()*300));
        }
    }
}

class StaggeredMyViewHoder extends RecyclerView.ViewHolder {
    TextView textView;

    public StaggeredMyViewHoder(View itemView) {
        super(itemView);

        textView = (TextView) itemView.findViewById(R.id.id_tv);
    }
}

效果如图:
瀑布流效果

通过以上的介绍 基本上就能把我们常见的结果效果实现了 但是 我们发现 RecyclerView并没有点击效果以及OnItemClick的方法 这个我会在下一篇当中详细介绍

Android中利用RecyclerView实现瀑布流效果 RecyclerView相比于传统的ListView,功能更加强大,使用也比较方便,因此Android官方更加推荐使用RecycleView,未来也会有更多的程序逐渐从ListView转向RecycleView。为此,首先先来了解下RecycleView的用法。 RecycleView属于新增的控件,为了让RecyclerView在所有的Android版本上都能使用,系统将RecyclerVie 阅读详情

相关推荐

RecyclerView+Glide+CardView实现瀑布流效果

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可

m0_46606086的博客 2939

Android开发之--Recyclerview实现瀑布流

首先说明,本文章瀑布流实现中,并没有拟定高度的实现,因为获取的数据就是不规则高度图片 首先,布局代码,就是一个recyclerview <android.support.v4.widget.SwipeRefreshLayout android:id="@+id/srlDressfreshLayout" android:layout_width="match_pare

janeen-jn的博客 820

Android手把手教你实现卡片式瀑布流效果(RecyclerView+CardView,附源码)

Android手把手教你实现卡片式瀑布流效果 卡片式的瀑布流效果是一种非常美观的UI设计,自从Android 5.0的 RecyclerView出现以后,实现瀑布流变得十分简单,本文将一步步带领读者去实现一个卡片式的瀑布流布局。 一、先上效果图 二、代码实现卡片式瀑布流 1. 涉及到要使用的类和控件 类或控件 介绍 作用

山中小僧的进阶之路 6075

Android RecyclerView 实现瀑布流效果

RecyclerView RecyclerView 是MetrialDesign 的重要一个组件,未来是一定会替代ListView的,RecyclerView结构松散,非常适合自定义。稍后会补上一篇RecyclerView基础的文章。 先看效果: 这里的每张图片都有着不同的尺寸,但RecyclerView可以将它们完美的结合在一起,表现形式是不是很美观:-)每个item的布局文件就是一个Ima

博客已搬家,请访问新博客https://kswapd.cn,提供更好的阅读体验。 839

RecyclerView彩虹瀑布流实现

目录:     1.瀑布流的应用场景     2.瀑布流布局实现的简单分析     3.实现彩虹瀑布流   1.瀑布流的应用场景        瀑布流的应用在移动开发中还是比较常见的,譬如在一些图片类和电商类APP中用来展示摄影图片或者商品信息,由于有时候图片的规格是不一致的,所以就有了交错的瀑布流布局的需求。   2..瀑布流布局实现的简单分析            其实瀑布流...

Andy_lau 3953

RecyclerView实现瀑布流,完美解决留白、错乱等问题

RecyclerView实现瀑布流,完美解决留白、错乱等问题,废话不多说。 网上很多说解决留白要用: layoutManager.invalidateSpanAssignments(); 是滴 虽然留白解决了,but会出现新的问题,当你往上滑动到顶部的时候,明显左右item其中一个必然出现向下滑动的视觉效果,很恶心的一个坑,所以说这个方法最好别用,因为只是从一个坑跳进了另一个坑里边,而且这...

Super_Ks的博客 3739

RecyclerView实现瀑布流布局

RecyclerView本身提供了三个LayoutManager的实现 LinearLayoutManagerGridLayoutManagerStaggeredGridLayoutManager 第一个和第二个大家比较常用,今天我们就来使用第三个比较陌生的StaggeredGridLayoutManager,让你分分钟实现瀑布流布局。 首先来看下最后的效果 好吧,让我们来实现它

阳光灿烂的日子的博客 619

Android Fragment + RecyclerView瀑布流布局

目录1、瀑布流效果图2、使用RecyclerView实现瀑布流布局2.1 RecyclerView的用法2.1.1 onCreteViewHolder(ViewGroup viewGroup,int i);2.1.2 onBindViewHolder(ViewHolder viewHolder,int i);2.1.3 getItemCount();Adapter代码示例 1、瀑布流效果图 2、使用RecyclerView实现瀑布流布局 2.1 RecyclerView的用法 RecyclerView与L

qq_45708835的博客 4381

封装MyAdapter,简化子类代码

package org.moblie.trian.testbaseadapter.adapter;import java.util.List;import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; impor

iblade的博客 1161

Android RecyclerView之瀑布流显示(四)

Android RecyclerView之瀑布流显示(四) 效果图   垂直显示(标准显示)       垂直反向显示            水平显示                水平反向显示 Android RecyclerView详解(一) Android RecyclerView之ListView显示(二) Android RecyclerView之Gri

Android开发-CXY的博客 4380

RecyclerView配合StaggeredGridLayoutManager实现瀑布流效果

1.前言 利用RecyclerView配合StaggeredGridLayoutManager可以实现类似于淘宝和京东的商品瀑布流效果,下面是一个简单的使用例子。 2.例子 就不多讲了,直接上示例代码。 在页面的布局文件使用RecyclerView。 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/andr...

‎‎‎‎‎不想吃泡面 1640

SwipeRefreshLayout+CardView+RecyclerView 精美瀑布流效果

博主声明: 转载请在开头附加本文链接及作者信息,并标记为转载。本文由博主威威喵原创,请多支持与指教。 本文首发于此 博主:威威喵|博客主页:https://blog.youkuaiyun.com/smile_running 感受 Material Design UI 魅力,你不能错过的Material Design 全系列文章: Material Design 之一 Bott...

你若盛开,蜜蜂自来 1万+

android RecyclerView 实现瀑布流带图库浏览效果

android RecyclerView 实现瀑布流带图库浏览效果这是本人第一次写博客,不好的地方,望各位大神多多指教! 好了进入正题,平常大家想实现瀑布流的时候,第一想到的就是重写控件,来达到瀑布流效果,自从了解到了 RecyclerView 后,才发现实现这个效果就需要一行代码就可以搞定,是不是很惊讶,好了,先上代码来验证一下!`package com.example.administrato

simon_yuyu的博客 3049

Android RecyclerView 实现瀑布流

瀑布流也是个常用的显示控件了,但是在使用时经常遇到一些问题,比如滑动回顶部后出现空隙、item在滑动时乱跳等问题。下面就来说说我怎么实现的瀑布流,并且怎么处理上面所说的这些问题的。我使用了原生控件RecyclerView+StaggeredGridLayoutManager来实现的瀑布流,没有用第三方开源框架。下面以2列的瀑布流为例子开始讲解。

程序员徐师兄的博客 7325

解决ViewPager嵌套RecyclerView,RecyclerView嵌套RecyclerView瀑布流事件冲突问题

1.瀑布流效果 2.嵌套滚动效果实现 3.嵌套滚动浮动菜单栏 3.1嵌套事件链接机制 3.2实现上拉刷新,上拉加载更多

Tiger的专栏 2053

基于虚拟阻抗重塑的构网型VSG变流器SISO序阻抗建模与宽频振荡抑制策略分析(面向高比例新能源并网场景)

本文深入探讨了基于虚拟阻抗控制的构网型VSG变流器SISO序阻抗建模技术及其在高比例新能源并网场景中的宽频振荡抑制策略。通过虚拟阻抗重塑,有效改善了变流器的阻抗特性,解决了次/超同步频段的振荡问题,并提供了参数设计、阻抗扫频验证等实用技巧,为新能源并网系统的稳定性提供了可靠解决方案。

weixin_29268385的博客 250

RecyclerView实现瀑布流效果(二)

在上篇中我们知道RecyclerView中默认给我们提供了三种布局管理器,分别是LinearLayoutManager、GridLayoutManager、StaggeredGridLayoutManager。其中StaggeredGridLayoutManager可实现交错式网格布局,正好可以用来实现瀑布流。 下面先看看效果图吧,再贴代码: 其中大部分内容实现其实是和上篇文章

【博客地址迁移到】:https://zhengxiaoyong.com 1万+

若依ruoyi框架实现单点登录或者接入统一认证

log.info("单点登录用户[{}]不存在, 需要创建.", loginName);log.info("单点登录用户[{}]已存在.", loginName);jsonObjectData.put("nickName","单点1");if (code.equals("0")) {//验证成功需要自动登录。jsonObject.put("msg","验证成功");ajax.put("msg", "登录成功");

GitHub质检员 2万+

Android使用RecyclerView实现瀑布流效果的列表展示

瀑布流效果图: 第一步:设置RecycleView的布局管理器为瀑布流StaggeredGridLayoutManager RecyclerView rlv = view.findViewById(R.id.pop_rlv); rlv.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManage...

_万能的博哥的博客 4108

阿里云大模型ACP认证模拟考试(一)

摘要:在阿里云大模型高级工程师 ACP 认证暂无真题题库的现状下,模拟题具有重要意义。其依照真实考试设计,涵盖题型、题量与分值分布,助力考生熟悉考试框架,合理分配答题时间精力,提升效率。同时,模拟题紧扣官方课程,能帮助考生精准定位知识盲点,如大模型架构原理和通义千问应用实践等重点内容,以便针对性完善知识体系。此外,通过练习模拟题,考生可掌握不同题型的解题思维与技巧,快速洞察复杂题目本质,提高答题准确率。

davidkorhenn的博客 4738

【滤波跟踪】多雷达协同下的多目标跟踪:航迹管理优化与卡尔曼滤波融合策略

本文深入探讨了多雷达协同下的多目标跟踪技术,聚焦于航迹管理优化与卡尔曼滤波融合策略两大核心。通过分析分布式融合架构、航迹关联算法(如匈牙利算法)以及应对非线性与机动目标的扩展卡尔曼滤波(EKF)与无迹卡尔曼滤波(UKF)等方法,旨在解决多源信息融合难题,提升复杂环境下目标跟踪的精度与鲁棒性。

weixin_29214199的博客 280

Android使用RecyclerView和StaggeredGridLayoutManager实现瀑布流效果-引子

1、瀑布流概述     淘宝、京东商城等电商平台的首页在下滑刷新的过程中会出现左右不对齐的情况,这种情况的产生主要是由商品类型决定的。不同类型的商品决定了不同的展示方式,一般情况下会通过自营、满减、满折等标签+价格+描述呈现。鉴于商品的多样性和展示的复杂性,会造成不同的商品单位高低不一的问题,这就是我们要讲的瀑布流的概念。 2、瀑布流实现步骤 搭建Android开发平台创建项目并引入相关依赖包 ...

Edwin_C 的博客 2733

华大HC32F460从零到200MHz:手把手教你配置时钟系统(附避坑指南)

本文详细解析了华大HC32F460 MCU的时钟系统配置,从启动过程、时钟树分析到实战配置200MHz系统时钟。文章手把手指导开发者如何正确配置外部晶振、MPLL锁相环及总线分频,并提供了硬件检查、代码解读及常见问题排查的避坑指南,帮助用户从零构建稳定可靠的高性能时钟环境。

net55的博客 295
上一篇: RecyclerView介绍(二)实现ListView的效果
下一篇: Android6.0新特性----OKHttp请求
yang0range
博客等级 码龄12年 15粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值