android ExpandableListView 删除 出现重复数据

本文介绍了在使用ExpandableListView时遇到的一个常见问题及其解决方案。当删除组并调用通知数据集更改方法时,最后一个子视图会出现重复。通过覆盖特定方法解决了此问题,并建议考虑使用RecyclerView作为替代。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先,我先阐述下,用ExpandableListView 出现的问题。ExpandableListView 在第一次加载数据的时候,数据可以正常显示,但是当我删除上一个group的时候,然后调用 notifyDataSetChanged(); 发现最后一个group 的 childView 重复了一个,折腾了很久了,解决不了(因为已经知道,是控件本身的问题), 后续到谷歌官网查看,没找到有用信息,再到github上下载类似的demo,嘿嘿,还是没找到,那怎么办呢,换其他控件,但我这是在维护一个老的项目,改动较大,思来想去,那只有看它源码,在通过继承方式,覆盖相关函数,结果出乎意料,发现了,一个函数,瞬间解决。解决方案如下:

@Override
public long getGroupId(int arg0) {
    return arg0;
}

@Override
public long getChildId(int arg0, int arg1) {
    return getCombinedChildId(arg0,arg1);
}

就改这两个地方就ok了。是不是比百度上的什么解决方案,简单多了。

下面是对getCombinedChildId函数的讲解:

这里写图片描述

If you foresee a clash in IDs based on this scheme:若果你的ids冲突了,可以基于这个方案。

ps:其实,完全没必要用ExpandableListView ,现在RecycleView 已经修复了很多之前listview遗留下来的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值