关于BaseExpandableListAdapter 调用getChildrenCount数组越界

在Android项目中遇到二级标签数据加载时出现的无规则数组越界问题,原因是二级标签数据在网络拉取过程中可能未完全加载就展示。通过对`getChildrenCount()`方法的调整,当点击位置超过已加载二级标签数组长度时返回0,避免处理未加载数据,确保已加载的部分能正常显示。这种解决方案适用于没有采用本地存储的情况,有效防止了因数据加载延迟引发的错误。
摘要由CSDN通过智能技术生成

最近在项目中要使用一个二级标签,结果使用中发现在getChildrenCount()方法下出现无规则的数组越界现象。排查后发现点击的position位置没有问题,反而二级数组childs的长度莫名其妙变短了,而且是无规律的。

@Override
public int getChildrenCount(int i) {
  return childs.get(i).size();
}

我突然想到我这个项目一级标签,二级标签的数据是分开从网络拉取的。

那造成这种情况的原因那就只可能是网络拉取数据的时候,二级标签数据未拉取全就急于展示(或者说进入页面过于快的点击一级标签),导致点击一级标签,拿着一级标签的positon去检索二级标签时,发现二级标签的数据可能还未拉取下来,数组就越界了。

解决方式有很多,要么等所有数据拉取全了在展示,要么存本地。不过我这个项目还没做本地存储,临时的解决方式就是加个判断:

@Override
public int getChildrenCount(int i) {
    if (i >= childs.size()){
        return i=0;
    }
  return childs.get(i).size();
}

如果点击的位置positon 大于 二级标签已加载的数组长度,直接返回0,不做处理。这样做的好处是可以显示已加载完成的那部分数据。

问题很简单,就是现象比较有误导性,还是挺坑的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值