一文搞懂Android 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一直依赖不了怎么办?
只能寻找其他方法来实现 我想到的是在用两层 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'
为什么呢?如果设置了固定尺寸 他是没有那种折叠效果的 会占的空间比较大 数据多少 排版很难看
以上就是Android RecyclerView点击展开、折叠效果的实现方式的详细内容,更多关于Android RecyclerView点击展开折叠的资料请关注好吧啦网其它相关文章!
相关文章:
1. CSS3实例分享之多重背景的实现(Multiple backgrounds)2. chatGPT教我写compose函数的详细过程3. asp(vbs)Rs.Open和Conn.Execute的详解和区别及&H0001的说明4. CSS Hack大全-教你如何区分出IE6-IE10、FireFox、Chrome、Opera5. XML在语音合成中的应用6. 在 XSL/XSLT 中实现随机排序7. JavaScript避免嵌套代码浅析8. Vue Element UI 表单自定义校验规则及使用9. 《CSS3实战》笔记--渐变设计(一)10. 用css截取字符的几种方法详解(css排版隐藏溢出文本)
