不多说,直接上代码

1、调用方式:

MyAdapter myAdapter = new MyAdapter(this);
myAdapter.setmList(list);//list自定义数据

2、MyAdapter类

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {private Context mContext;private List<DataIconBean> mList;private ExpandableViewHoldersUtil.KeepOneHolder<ViewHolder> keepOne;public void setmList(List<DataIconBean> mList) {this.mList = mList;}public MyAdapter(Context context, UpDateListener listener) {super();mContext = context;}@Overridepublic int getItemCount() {return mList.size();}@NonNull@Overridepublic ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {View view = LayoutInflater.from(mContext).inflate(R.layout.item_add_custom_layout, viewGroup, false);return new ViewHolder(view);}@Overridepublic void onBindViewHolder(@NonNull final ViewHolder viewHolder, final int position) {Log.d("Logger", "MyAdapter onBindViewHolder: " + position);keepOne.bind(viewHolder, position);if (mList == null) {return;}//TODO第一层显示样式处理viewHolder.relativeLayout.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {keepOne.toggle(viewHolder);}});viewHolder.iv_editone.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {mListener.onEdit(bean);}});viewHolder.img_select.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {keepOne.toggle(viewHolder);}});ItemIconAddListAdapter menuAdapter = new ItemIconAddListAdapter(listItemBaseBean);//第二层展示样式viewHolder.rc_item.setLayoutManager(new GridLayoutManager(mContext, 5));menuAdapter.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {//TODO 自己的逻辑}});viewHolder.rc_item.setAdapter(menuAdapter);}class ViewHolder extends RecyclerView.ViewHolder implements ExpandableViewHoldersUtil.Expandable, View.OnClickListener, View.OnLongClickListener {TextView tv_icon_name;ImageView img_select;ImageView img_icon;ImageView iv_editone;RecyclerView rc_item;RelativeLayout relativeLayout;public ViewHolder(@NonNull View itemView) {super(itemView);img_icon = itemView.findViewById(R.id.img_icon);img_select = itemView.findViewById(R.id.img_select);rc_item = itemView.findViewById(R.id.rc_item);tv_icon_name = itemView.findViewById(R.id.tv_icon_name);relativeLayout = itemView.findViewById(R.id.ll_item);keepOne = ExpandableViewHoldersUtil.getInstance().getKeepOneHolder();iv_editone = itemView.findViewById(R.id.iv_editone);rc_item.setVisibility(View.GONE);rc_item.setAlpha(0);}@Overridepublic View getExpandView() {return rc_item;}@Overridepublic void doCustomAnim(boolean isOpen) {//旋转指定图片if (isOpen) {ExpandableViewHoldersUtil.getInstance().rotateExpandIcon(img_select, 90, 0);} else {ExpandableViewHoldersUtil.getInstance().rotateExpandIcon(img_select, 0, 90);}}@Overridepublic void onClick(View view) {int position = (int) view.getTag();Log.d("Logger", "ViewHolder onClick: ");}@Overridepublic boolean onLongClick(View view) {int position = (int) view.getTag();Log.d("Logger", "ViewHolder onLongClick: ");return false;}}}布局文件item_add_custom_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/layout_feed_back"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginBottom="13dp"><RelativeLayoutandroid:id="@+id/ll_item"android:layout_width="match_parent"android:layout_height="56dp"android:paddingLeft="13dp"android:paddingRight="13dp"android:orientation="horizontal"><ImageViewandroid:id="@+id/img_select"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerVertical="true"android:layout_marginLeft="2dp"android:background="@drawable/icon_left_item_default" /><LinearLayoutandroid:id="@+id/ll_icon_bg"android:layout_width="40dp"android:layout_height="40dp"android:layout_centerVertical="true"android:layout_marginLeft="18dp"android:layout_toRightOf="@+id/img_select"android:background="@drawable/bg_circle"android:gravity="center"><ImageViewandroid:id="@+id/img_icon"android:layout_width="24dp"android:layout_height="24dp"android:layout_centerInParent="true"android:src="@drawable/icon_expense_dining" /></LinearLayout><TextViewandroid:id="@+id/tv_icon_name"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerVertical="true"android:layout_marginLeft="19dp"android:layout_toRightOf="@+id/ll_icon_bg"android:text="餐饮"android:textColor="@color/black" /><ImageViewandroid:id="@+id/iv_editone"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentRight="true"android:layout_centerVertical="true"android:src="@drawable/icon_dot" /></RelativeLayout><androidx.recyclerview.widget.RecyclerViewandroid:id="@+id/rc_item"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@+id/ll_item"android:background="@drawable/shape_listitem_gray"android:paddingLeft="13dp"android:paddingRight="13dp"android:paddingBottom="15dp" />
</RelativeLayout>

3、第二层Adapter

public class ItemIconAddListAdapter extends BaseQuickAdapter<ItemBaseBean, BaseViewHolder> {public ItemIconAddListAdapter(List<ItemBaseBean> list) {super(R.layout.item_two_icon_layout,list);}@Overrideprotected void convert(@NotNull BaseViewHolder helper, ItemBaseBean data) {//TODO显示样式}}

效果图:

android recycleView嵌套recycleView下拉二级列表显示(带动画)相关推荐

  1. Android:ExpandableListView实现下拉二级列表

    来源:菜鸟教程,下面是直接下载的地址 ExpandableListViewDemo.zip 下面是实现案例 还没弄明白,但是抄源码确实实现了 下面是菜鸟教程的地址,自己留着备用记录一下,xdm,冲~~ ...

  2. RecycleView 嵌套 RecycleView 导致自动滚动

    问题及现象: RecycleView 嵌套 RecycleView,当页面加载完成之后,页面会自动停留在里面RecycleView 的第一个Item 那里. 解决方法: 给最外层的RecycleVie ...

  3. 解决RecycleView 嵌套 RecycleView 显示不全的问题

    RecycleView 嵌套 RecycleView,里面的RecycleView 内容显示不全. 原因是里面的RecycleView ,我在布局里面写的高度是match_parent <and ...

  4. android 4.4 禁止下拉,Android开发中禁止下拉式的实现技巧

    我们开发项目的时候,经常会看到禁止的情况,而Android开发中并没有直接调用的接口,下面是爱站技术频道小编就给大家介绍的Android开发中禁止下拉式的实现技巧,希望网友们喜欢! 分享给大家供大家参 ...

  5. css二级菜单会然下面遮住_JavaScript实现下拉二级菜单详解

    下拉菜单最终效果如图: 实现原理,通过绝对定位的方式,使下拉列表脱离文档流.通过js或者css来控制鼠标移入后的效果 初始时可以改变 1.display:none;使其隐藏 2.height:0px; ...

  6. android改变下拉框字体颜色,有没有简单的方法来改变Android中的Spinner下拉颜色?...

    我创建我的主题以与应用程序一起使用,主题的父级是Theme.AppCompat.Light.NoActionBar 顺便说一句,我想要白色背景和黑色文字. 这是适配器代码 val adapter = ...

  7. 打造Android微信朋友圈下拉刷新控件

    打造Android微信朋友圈下拉刷新控件> 转载于:https://www.cnblogs.com/zhujiabin/p/5707789.html

  8. Jquery垂直下拉二级菜单

    自己做了一个基于Jquery 的垂直下拉二级菜单功能,直接看图: Html的代码如下: <!DOCTYPE html> <html><head><meta c ...

  9. Android仿苹果版QQ下拉刷新实现(二) ——贝塞尔曲线开发鼻涕下拉粘连效果

    前言 接着上一期 Android仿苹果版QQ下拉刷新实现(一) --打造简单平滑的通用下拉刷新控件 的博客开始,同样,在开始前我们先来看一下目标效果: 下面上一下本章需要实现的效果图: 大家看到这个效 ...

  10. android自带下拉阻尼动画,Android实现简单的下拉阻尼效应示例代码

    OS的下拉上拉都会出现一个很玄的动态效果.在Android中,虽然可以实现类似的效果,但有点不同的是,如果调用overScrollBy来实现类似的阻尼效应的话,最顶部会出现一片亮的区域,让人感觉不是很 ...

最新文章

  1. react native 常用学习或查资料网址
  2. 算法与数据结构大系列 - NO.1 - 插入排序
  3. python搜索关键词自动提交订单_Python批量获取淘宝相关搜索和下拉框关键词
  4. C# 常用类-IO-ClassXML
  5. express ajax分页实例,element+express+mongoose实现分页查询
  6. PHP算法导出Excel实现字段联动
  7. 5分钟完成业务实时监控系统搭建,是一种什么样的体验?
  8. python表格对齐_Python对Excel表格数据重新排版
  9. shell错位_Linux 中纠正拼写错误的Bash 命令方法
  10. 利用Photoshop减小照片景深
  11. 【ArcGIS微课1000例】0005:空间连接(Spatial Join)
  12. python删除、替换字符串某字符后的字符串(删除字符串、替换字符串、strip、split、rstrip、lstrip、replace)
  13. 浅析HTML文档结构对DivCSS布局的意义
  14. 网易高并发优化 | 公开课-02
  15. 博文视点在SD2.0大会上以书会友
  16. 同为数据分析师,有人14k,你却6k?
  17. android 支付宝 地图,支付宝小程序地图组件 地图·Map
  18. int和long long有符号整形 负数比正数多一个
  19. 钥匙串密码忘记了怎么办?如何在Mac上重置钥匙串密码
  20. linux 编译c文件 arm,用arm-linux-gcc编译arm裸机程序(可调用库)

热门文章

  1. pandas 列计算log不用math.log而是np.log
  2. Python学习笔记-数据类型(元组 tuple)
  3. 基于特征的真菌分解木材的理解
  4. python能做什么工作好-python可以做什么工作
  5. 11月全国程序员平均工资最新出炉,网友:我丢了同行的脸
  6. android开发设置页面自适应横竖屏,android TV 竖屏页面开发
  7. Matlab中_pkg.exe,pkg是什么文件?pkg文件怎么安装?
  8. Windows10输入法变成繁体怎么办?
  9. 普莱得电器IPO过会:拟募资5.6亿 为杨伟明及韩挺两家族控制
  10. 数据分析中的常用数学模型实战教程笔记(上)