【问题标题】:How do I save a List<LatLng>?如何保存 List<LatLng>?
【发布时间】:2016-01-03 17:14:10
【问题描述】:

您好,我正在使用谷歌地图制作一个应用程序,我希望能够保存一个列表,以便用户稍后打开它可以使用。 在网站上搜索了一下后,我发现人们建议使用gson,但我无法让它工作。我愿意使用它,但我无法让它工作。这是我的代码:

private void loadPoints() throws IOException, ClassNotFoundException {
    Reader isReader = new InputStreamReader(new FileInputStream(file));
    List<LatLng> list = Collections.synchronizedList(new ArrayList<LatLng>());
    Type listOfLatLng = new TypeToken<List<LatLng>>() {
    }.getType();
    String s = gson.toJson(list, listOfLatLng);
    List<LatLng> RetreivedPoints = gson.fromJson(s, listOfLatLng);
    isReader.close();
    System.out.println(RetreivedPoints.get(0) );

    if (RetreivedPoints != null) {
        String joined = TextUtils.join(", ", RetreivedPoints);
        tvCoords.setText(joined);
    }
}


private void savePoints(List<LatLng> l) throws IOException {
    gson = new Gson();


    Writer osWriter = new OutputStreamWriter(new FileOutputStream((file)));
    List<LatLng> list = Collections.synchronizedList(new ArrayList<LatLng>());
    list.add(new LatLng(29, 49));
    gson.toJson(list, osWriter);

    Toast.makeText(MapsActivity.this, "Saved data!", Toast.LENGTH_SHORT).show();

}

我在 savePoints(); 时没有收到任何错误但是当我 loadPoints();检索点为空。

如果您认为有更好的方法,如果您能发表评论,我将不胜感激!

【问题讨论】:

    标签: java android geolocation


    【解决方案1】:

    您还没有注册任何 TypeAdapters/JsonSerializers,所以它不知道如何将 LatLng 转换为 JSON。阅读此StackOverflow Answer,了解如何使用 TypeAdapters/JsonSerializers。

    【讨论】:

    • 我对帖子有点不知所措。你能为我澄清一些事情吗?看起来 RetreivedPoints 为空的原因是因为我还没有序列化它?我必须在 savePoints() 中执行此操作,然后我必须在 loadPoints() 中反序列化它?我该怎么做?
    • 我建议使用一个全局引用的常量 Gson 对象。该 Gson 对象应使用 GsonBuilder 类构建,您可以在其中添加 TypeAdapters/JsonSerlializers。您需要为 LatLng 对象创建一个 TypeAdapter/JsonSerializer,这样它就会被正确序列化
    • 您需要扩展 TypeAdapter 或实现 JsonSerializer,具体取决于您选择的任何一个。您还需要实现 read 方法,否则它将毫无意义,因为您无法从 JSON 重建 LatLng。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-29
    • 1970-01-01
    • 2013-10-04
    • 2020-10-20
    • 2021-02-26
    • 2021-10-11
    • 2015-03-22
    相关资源
    最近更新 更多