纯净、安全、绿色的下载网站

首页|软件分类|下载排行|最新软件|IT学院

当前位置:首页IT学院IT技术

Android RecyclerView点击展开折叠 一文搞懂Android RecyclerView点击展开、折叠效果的实现代码

吕氏春秋i   2021-06-23 我要评论
想了解一文搞懂Android RecyclerView点击展开、折叠效果的实现代码的相关内容吗,吕氏春秋i在本文为您仔细讲解Android RecyclerView点击展开折叠的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:Android,RecyclerView点击展开折叠,Android,RecyclerView展开,下面大家一起来学习吧。

RecyclerView是什么

       RecycleView是Android5.0后谷歌推出的一个用于在有限的窗口中展示大量数据集的控件,位于support-v7包中。它可以实现与ListView和GridView一样的效果,提供了一种插拔式的体验,高度的解耦,异常的灵活,只需设置其提供的不同的LayoutManager,ItemAnimator和ItemDecoration,就能实现不同的效果。

RecyclerView的优点

   1、支持局部刷新。
   2、可以自定义item增删时的动画。
   3、能够实现item拖拽和侧滑删除等功能。
   4、默认已实现View的复用,而且回收机制更加完善。

实现效果

在这里插入图片描述

思路

我使用的是第三方适配器BaseRecyclerViewAdapterHelper

但是遇到一个问题
这个适配器2.0和3.0不兼容 而2.0版本 没有折叠效果这个组件 我用3.0版本 gradle一直依赖不了
怎么办?

2

只能寻找其他方法来实现 我想到的是在用两层 RecyclerView的办法
在第一次的item布局里嵌套第二次RecyclerView
觉得可行 就开始写代码 最终结果还可以优化 就是上面的样子 实现了点击折叠和展开的效果

代码

代码实现比较简单
唯一要说的就是通过一个Flag来更改折叠状态
在第一层的adapter中可以设置一个标记位

//默认是关闭
 private boolean isOpen = false;
 
 public boolean isOpen() {
        return isOpen;
    }

    public void setOpen(boolean open) {
        isOpen = open;
    }

然后在 convert方法中 来切换数据的状态

 if (isOpen) {
            mRecyclerView.setVisibility(View.VISIBLE);
            linearLayout.setVisibility(View.VISIBLE);
            view.setBackgroundResource(R.mipmap.icon_more_than_open);
        } else {
            mRecyclerView.setVisibility(View.GONE);
            linearLayout.setVisibility(View.GONE);
            view.setBackgroundResource(R.mipmap.icon_more_than);
        }

最后在数据展示的那个页面 调用Adapter里的折叠方法

 mAdapter.setOnItemClickListener((adapter, view, position) -> {
            if (mAdapter.isOpen()) {
                mAdapter.setOpen(false);
            } else {
                mAdapter.setOpen(true);
            }
            //这个是渲染数据后 刷新 不然看不到数据
            mAdapter.notifyDataSetChanged();
        });

最后提示
adapter里的布局 建议设置成 wrap_content

android:layout_width="match_parent"
  android:layout_height="wrap_content"

为什么呢?
如果设置了固定尺寸 他是没有那种折叠效果的 会占的空间比较大 数据多少 排版很难看


相关文章

猜您喜欢

  • C++ PE文件特征码识别 C++ 实现PE文件特征码识别的步骤

    想了解C++ 实现PE文件特征码识别的步骤的相关内容吗,lyshark在本文为您仔细讲解C++ PE文件特征码识别的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:c++,特征码识别,c++,pe文件,下面大家一起来学习吧。..
  • Java byte & 0xff作用 Java中的byte & 0xff到底有什么作用?

    想了解Java中的byte & 0xff到底有什么作用?的相关内容吗,小楼夜听雨QAQ在本文为您仔细讲解Java byte & 0xff作用的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:Java,byte作用,0xff作用,下面大家一起来学习吧。..

网友评论

Copyright 2020 www.recoverusbdrive.com 【数据恢复精灵】 版权所有 软件发布

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 点此查看联系方式