当前位置: 首页 > 知识库问答 >
问题:

如何在Android中从Gson中存储和检索一个对象?[副本]

艾飞宇
2023-03-14

在我的活动中,用户有一个他选择的图像数组,然后我想将它们存储在首选项中。然后用户离开活动,回来时,我希望这些图像仍然加载到ImageView中。我试图使用Gson来完成这一点,但我遇到了麻烦,看不出我做错了什么。希望外界的洞察力能帮助我找到这个显而易见的答案,我只是没有看到。

谢谢你。

这是我到目前为止的代码。

private void savePreferencesForImages(String key, ArrayList<Image> imageList)
    {
        SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
        SharedPreferences.Editor editor = sharedPreferences.edit();
        Gson gson = new Gson();
        String json = gson.toJson(imageList);
        editor.putString(key,json);
        editor.commit();
    }


//Storing Local data.
private void loadPreferences()
{
    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);

    Gson gson = new Gson();
    String gsonString = sharedPreferences.getString("userImages", "");
    ArrayList<Image> images = gson.fromJson(gsonString, Image.class);//Ask StackOverflow tomorrow.
}

共有1个答案

夏建木
2023-03-14

在检索数据的部分,您将需要一个类型来将字符串反序列化为图像列表······

比如:

private void loadPreferences()
{
    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);

    Gson gson = new Gson();
    Type type = new TypeToken<List<Image>>() {}.getType();
    String gsonString = sharedPreferences.getString("userImages", "");
    List<Image> images = gson.fromJson(gsonString, type);
}
 类似资料:
  • 我正在使用这段代码,但当我从首选项获得位置时,位置返回如下所示... 位置[mprovider=存储,Mtime=0,mlatitude=30.0,montilunde=76.0,mhasaltitude=false,maltitude=0.0,mhasspeed=false,mspeed=0.0,mhasbearing=false,mbearing=0.0,mhasaccuracy=false,

  • 如何在一个对象中存储对象和数组?更新一个对象内的对象和数组 const obj={key1:1,key2:2,key3:3,keys:['key1','key2','key3']};我在一次采访中得到了这个问题。现在我想在对象中添加一些新数据。2无论何时添加到对象中,都应在该主对象内的数组中更新“key_”(添加了key number)。 输出应该是这样的(你可以使用任何方法/函数/循环来更新它.

  • 和我的数据库的结构: 正如您所看到的,“pasos”是一个字符串列表,而“成分”是一个成分列表。 我无法找到的是如何从数据库中检索这些列表,因为我想获得一个接收列表。我尝试了很多事情,但都是错误的,因为它没有检索到任何列表。 我还知道FB DB可以使用HashMaps,但我不知道如何检索它们或从hashmap传递到列表,而不必遍历hashmap每个位置 那我该怎么办呢?提前谢谢你

  • 我有一个JTable,我可以在其中添加具有几个属性的用户,如年龄、名称等。这起作用了,用户被添加到我的arraylist和JTable中。现在我想要的是,当我选择JTable行时,能够获得存储在用户的arrayList中的对象,以便我可以修改或删除它们。 有谁能帮我一下吗?谢谢!