0

我正在开发一个 appengine 连接的 android 项目。我的端点方法之一返回一个集合

return CollectionResponse.<MyData> builder().setItems(result).build();

当数据到达android时,我想将数据持久化到SharedPreferences。这是一个两步过程:

  1. 持久化表示对 sharedPreferences 的响应的 json
  2. 将 json 解组为CollectionResponseMyData或至少解组List<MyData>

有没有人做过这个并且不介意分享如何?

为了澄清,如果需要,步骤 1 在数据到达时发生。第 2 步发生在稍后需要数据的某个时间。

4

1 回答 1

0

您的数据是 json,因此您可以使用gson转换为字符串并返回 json。您需要它,因为您无法在 SharedPreference 上保存 json 格式。

public boolean saveJson(List<MyData> myData){
    Gson gson = new Gson();
    String json = gson.toJson(myData);
    return saveMyData(json);
}

public List<MyData> getJson() {
    Type listOfObjects = new TypeToken<List<MyData>>(){}.getType();
    String json = restoreMyData();

    Gson gson = new Gson();
    List<MyData>  myListData = gson.fromJson(json, listOfObjects);
    return myListData;
}
public boolean saveMyData(String data) {
    SharedPreferences settings = context.getSharedPreferences("PrefName", 0);
    SharedPreferences.Editor editor = settings.edit();

    editor.putString("MyKey", data);
    return editor.commit();
}

public String restoreMyData() {
    SharedPreferences settings = context.getSharedPreferences("PrefName", 0);
    String data = settings.getString("MyKey", "default value, you can put null here");
    return data;
}
于 2014-03-20T22:26:19.753 回答