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

安卓Java开发:如何解析JSON数组数据到RecyclerView并解决闪退问题

问题根因

从错误日志可以直接定位崩溃原因:崩溃发生在Adapter_meeting的onBindViewHolder方法第47行,对应代码为:

holder.tv_namaEvent.setText(mitem_meeting.get(position).getValue());

由于getValue()返回的是Integer类型,直接传入setText()方法时,系统会将这个整数识别为字符串资源ID,尝试从资源表中查找对应的字符串,查找失败就会抛出Resources$NotFoundException,该问题和JSON数组结构本身没有关联。

修复方案

只需要把Integer类型的步数转成字符串再传给setText即可,修改onBindViewHolder内的对应代码:

@Override
public void onBindViewHolder(@NonNull viewHolder holder, int position) {
    // 将Integer转成字符串后再设置到TextView,两种写法二选一即可
    holder.tv_namaEvent.setText(String.valueOf(mitem_meeting.get(position).getValue()));
    // 也可以写为 holder.tv_namaEvent.setText(mitem_meeting.get(position).getValue() + "");
    holder.tv_lokasiEvent.setText(mitem_meeting.get(position).getStartTime());
    holder.tv_waktuEvent.setText(mitem_meeting.get(position).getEndTime());
    holder.tv_tanggalEvent.setText(mitem_meeting.get(position).getStartTimeMillis());
}

额外优化建议

  • 建议增加空值判断逻辑,判断response.body()、resource.steps_count不为空后再初始化适配器,避免空指针崩溃
  • 如果后续需要解析接口返回的heart_minutes、weight等其他数组字段,只需要在nodeApi类中新增对应字段的List声明即可,示例如下:
public class nodeApi {
    @SerializedName("steps_count")
    public List<steps_count> steps_count = null;
    // 新增其他数组字段声明
    @SerializedName("heart_minutes")
    public List<HeartMinutes> heartMinutes = null;
    @SerializedName("weight")
    public List<Weight> weight = null;
    // 再补充对应HeartMinutes、Weight等实体类的定义即可
}

内容的提问来源于stack exchange,提问作者Alifa Al Farizi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 06:39:02