Android 使用ExpandableListView实现三级列表

本文介绍了如何在Android中使用ExpandableListView创建一个包含父级、子级和子子级的三级列表。通过创建数据模型、布局文件、适配器以及处理展开/折叠事件,可以实现层次结构数据的展示。同时提到了自定义扩展的ExpandableListView以解决显示不全的问题。
摘要由CSDN通过智能技术生成

✍️作者简介:小北编程(专注于HarmonyOS、Android、Java、Web、TCP/IP等技术方向)
🐳博客主页:开源中国稀土掘金51cto博客博客园知乎简书慕课网CSDN
🔔如果文章对您有一定的帮助请👉关注✨、点赞👍、收藏📂、评论💬。
🔥如需转载请参考【转载须知】

先看图片

在这里插入图片描述

使用 ExpandableListView 实现三级列表

本文将介绍如何使用ExpandableListView 来实现一个三级列表。通过嵌套使用这两个组件,我们可以轻松地显示具有父级、子级和子子级的层次结构数据。

实现过程

以下是使用 ExpandableListView 实现三级列表的步骤:

  1. 创建数据模型:首先,创建表示列表项的数据模型类。您可以定义父级、子级和子子级之间的关系,并添加所需的属性和方法。

  2. 创建布局文件:为每个层级的列表项创建相应的布局文件。分别创建父级项、子级项和子子级项的布局。

  3. 创建适配器:创建 ExpandableListView 的适配器类,并继承自 BaseExpandableListAdapter。适配器负责管理数据集并渲染列表项。

  4. 实现适配器方法:在适配器类中实现必要的方法,如 getGroupCount、getChildrenCount、getGroupView 和 getChildView。根据层级的不同,选择不同的布局文件和视图。

  5. 创建 ExpandableListView 实例:在使用 ExpandableListView 的活动或片段中,创建 ExpandableListView 实例,并为其设置适配器。

  6. 绑定数据:通过适配器将数据集绑定到 ExpandableListView。确保为父级、子级和子子级项提供正确的数据,并在必要时更新适配器。

  7. 处理展开/折叠事件:为 ExpandableListView 设置 OnGroupClickListener 和 OnChildClickListener,以便处理父级和子级项的展开和折叠事件。根据点击的项和层级,执行相应的操作。

  8. 运行应用程序:编译并运行您的应用程序,查看生成的三级列表效果。确保父级、子级和子子级项正确显示,并且可以展开/折叠子级项。

通过按照以上步骤,您可以使用 ExpandableListView 实现一个具有父级、子级和子子级的三级列表。ExpandableListView 提供了方便的嵌套特性,使您可以轻松展示和管理层次结构数据,并为用户提供良好的交互体验。

实现嵌套的时候注意嵌套的ExpandableListView需要重写否则嵌套导致的数据显示不全

/**
 * @author: 
 * @date: 2023/7/11
 * 描述:解决嵌套之下显示不全的问题
 */
public class CustomExpandableListView extends ExpandableListView {
    public CustomExpandableListView(Context context) {
        super(context);
    }

    public CustomExpandableListView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public CustomExpandableListView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }
    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        // 解决显示不全的问题
        int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2
                , MeasureSpec.AT_MOST);
        super.onMeasure(widthMeasureSpec, expandSpec);
    }
}

如果感觉本文对您有所帮助请点赞收藏,谢谢支持!gitee代码链接

有兴趣的可以看看 使用RecyclerView来实现多层级的数据
有兴趣的可以看看使用 RecyclerView 和 BaseMultiItemQuickAdapter 实现固定列表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小北编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值