You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RecyclerView无法加载服务端JSON数据 报ArrayOutOfBoundIndex异常

问题定位
  • 核心错误:Model类中非法创建Activity实例,数据存入了错误对象
    你在PrisonerModel.fromJson()方法中手动new MainActivity()是完全错误的用法:Android的Activity实例由系统负责创建调度,你手动new出来的实例和当前正在运行的MainActivity实例毫无关联,存入ma.inside1的数据根本不会同步到Activity onCreate方法中初始化的那个inside1列表,所以Activity层面的inside1始终是空列表,访问下标自然抛出ArrayOutOfBoundIndex异常。
  • 异步任务逻辑不匹配,没有通知列表刷新
    你在onCreate中先启动异步请求,再初始化inside1,就算异步请求拿到了正确数据,也没有把解析结果写入Activity对应的inside1列表,更没有调用Adapter的notifyDataSetChanged()方法通知RecyclerView刷新,数据自然不会显示。
  • Model层解析逻辑存在缺陷
    你当前贴出的代码中pm1.fromJson(jsonArray)、pm1.x都没有对应的实现定义,同时把Activity实例传入Model层操作属性也不符合分层架构规范,Model层只负责数据解析,应该把解析完成的列表结果返回给调用层,不要在Model层操作Activity的属性。
修复建议
  1. 删掉Model类里所有创建MainActivity实例、操作Activity属性的代码,修改fromJson方法,把解析得到的PrisonerModel列表作为返回值返回。
  2. 在异步任务的onPostExecute回调里,把解析得到的列表数据添加到Activity的inside1中,再调用Adapter的notifyDataSetChanged()方法刷新列表。
  3. 所有访问inside1下标的位置,先判断列表长度是否大于要访问的下标,避免越界异常。

内容的提问来源于stack exchange,提问作者JASIM CHOUHAN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 14:15:05