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

Android开发问题:从JSON读取经纬度到TextView仅显示最后一条记录

解决TextView仅显示最后一条经纬度记录的问题

嘿,我来帮你搞定这个小问题!你现在遇到的情况,核心原因是每次循环都直接用setText()覆盖了TextView的原有内容,而不是把新的经纬度记录追加进去——毕竟setText()的作用是替换掉TextView里的所有内容,不是在后面加东西。

问题分析

假设你原来的代码大概是这样的(模拟常见的错误写法):

// 解析JSON数组
JSONArray jsonArray = new JSONArray(你的JSON字符串);
for (int i = 0; i < jsonArray.length(); i++) {
    JSONObject item = jsonArray.getJSONObject(i);
    String latitude = item.getString("latitude");
    String longitude = item.getString("longitude");
    // 这里每次都会把之前的内容覆盖,最后只剩最后一条
    yourTextView.setText(latitude + "|" + longitude);
}

解决方案:先累加内容,再一次性设置

我们需要先把所有经纬度记录拼接成一个完整的字符串,最后再设置给TextView。推荐用StringBuilder来做拼接,效率更高(尤其是数据量大的时候):

// 1. 初始化一个StringBuilder用来累加内容
StringBuilder locationBuilder = new StringBuilder();
JSONArray jsonArray = new JSONArray(你的JSON字符串);

// 2. 遍历JSON数组,拼接每一条记录
for (int i = 0; i < jsonArray.length(); i++) {
    JSONObject item = jsonArray.getJSONObject(i);
    String lat = item.getString("latitude");
    String lng = item.getString("longitude");
    
    // 拼接当前的经纬度,格式为「纬度|经度」
    locationBuilder.append(lat).append("|").append(lng);
    
    // 如果不是最后一条记录,可以加个换行(或者你想要的分隔符),让内容更易读
    if (i != jsonArray.length() - 1) {
        locationBuilder.append("\n");
    }
}

// 3. 最后把拼接好的完整字符串设置给TextView
yourTextView.setText(locationBuilder.toString());

额外说明

  • 如果你希望所有记录在一行显示,用|分隔每条(比如lat1|lng1|lat2|lng2),可以把换行换成|,不过记得最后要去掉多余的分隔符,比如用locationBuilder.deleteCharAt(locationBuilder.length() - 1)来移除最后一个|。
  • 如果数据量很小,用普通String拼接也可以,但StringBuilder是更优的选择,因为String是不可变对象,每次拼接都会生成新的对象,浪费内存。

内容的提问来源于stack exchange,提问作者Matheo Espitia

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:49:27