【问题标题】:Parse double value and set in TextView解析双精度值并在 TextView 中设置
【发布时间】:2015-04-09 22:24:13
【问题描述】:

对于解析数据,我使用 retrofit (gson) 库。我在解析 double value 'position' 时遇到问题。您可以在下面看到完整的 JSON。我解析字符串数组'words'很好,但有双值我在TextView中什么都没有。谁能说出到底哪里错了,我需要修复什么以及我错过了什么?

感谢您的帮助!

JSON

MainActivity.java

w3wNetworkFactory.w3wGetInstance().w3wGetApiCall().getPosition(w3w_API_KEY, new Words("gliders.inquest.hardly"), new Callback<PositionResponse>() {
            @Override
            public void success(PositionResponse positionResponse, Response response) {
                position_w3w.setText(Arrays.toString(positionResponse.getPosition()).replaceAll("\\[|\\]", ""));
                //Log.d("w3w location: ", Arrays.toString(positionResponse.getPosition()));
                String mLatLng = Arrays.toString(positionResponse.getPosition()).replaceAll("\\[|\\]", "");
                //Convert String to double
                double value = Double.parseDouble(mLatLng);
                //Set marker to map
                mGoogleMap.addMarker(new MarkerOptions().position(value)
                        .title("Geolocation system")
                        .snippet("Your last current location which was available!")
                        .icon(BitmapDescriptorFactory.fromResource(R.drawable.icon_location)));
            }

            @Override
            public void failure(RetrofitError error) {
                error.toString();
            }
        });

PositionResponse.java

public class PositionResponse {
    private double[] position;

    public double[] getPosition() {
        return position;
    }
}

【问题讨论】:

  • 我建议您将收到的值记录在 PositionResponse 对象中。我刚刚测试了您的 Arrays.toString(positionResponse.getPosition()).replaceAll("\\[|\\]", "") 语句,它看起来像预期的那样工作。
  • 你好,伙计。你的意思是这个说法不正确?我不完全理解你的想法。我还使用了 Log Log.d("w3w location: ", Arrays.toString(positionResponse.getPosition()));而不是 Arrays.toString(positionResponse.getPosition()).replaceAll("\[|\]", "") 只是为了查看 logcat 中的内容。不幸的是,我在 logcat 中也一无所有。你知道原因吗?
  • 说法正确。我测试了它并且它有效。在PositionResponse 中记录double[] position 的值,以确保它们被填充在那里。
  • 你好!我发现了我的错误。就在这里 return String.format("%f,%f", words);愚蠢的错误。但我还有一个问题。正如您从 JSON 中看到的它的纬度和经度。我想在谷歌地图中设置标记,但这里有红线:.position(value) 你能再检查一下我的帖子吗?我更新了它。我又做错了什么。
  • 我想我看到了这个问题。现在发布答案。

标签: java android json parsing android-parser


【解决方案1】:

要回答有关 Google 地图的问题,您需要将纬度和经度分开,并创建一个LatLng object。我认为应该是这样的:

    @Override
                public void success(PositionResponse positionResponse, Response response) {
                    position_w3w.setText(Arrays.toString(positionResponse.getPosition()).replaceAll("\\[|\\]", ""));
                    //Log.d("w3w location: ", Arrays.toString(positionResponse.getPosition()));
                    String mLatLng = Arrays.toString(positionResponse.getPosition()).replaceAll("\\[|\\]", "");

                    String[] arrLatLng = mLatLng.split(","); //separate out lat and lon
                    LatLng latLon = new LatLng(Double.parseDouble(arrLatLng[0]), Double.parseDouble(arrLatLng[1])); //create the LatLng object

                    //Convert String to double
                    //double value = Double.parseDouble(mLatLng); this wouldn't work, you need to do both values individually
                    //Set marker to map, use LatLng object latLon
                    mGoogleMap.addMarker(new MarkerOptions().position(latLon)
                            .title("Geolocation system")
                            .snippet("Your last current location which was available!")
                            .icon(BitmapDescriptorFactory.fromResource(R.drawable.icon_location)));

                     CameraPosition cameraPosition = new CameraPosition.Builder()
                        .target(latLon).zoom(12).build();


                     mGoogleMap.animateCamera(CameraUpdateFactory
                        .newCameraPosition(cameraPosition));
                }

有关完全设置 Google Maps API 的更多详细信息,请在此处查看我的其他答案:Cannot add map in Android Studio as stated in Google "Getting Started" page; Android Studio gives error

【讨论】:

  • 谢谢!它对我有帮助。 =)
【解决方案2】:

尝试使用doublelong 用于整数。在带有浮点数的 JSON 数字中。

【讨论】:

  • 我在 PositionResponse 类中使用了 double 但无论如何结果与以前相同。我没什么意思。您还有其他想法吗?
猜你喜欢
  • 2016-03-03
  • 1970-01-01
  • 2021-04-02
  • 2020-07-01
  • 2019-06-14
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 2013-01-28
相关资源
最近更新 更多