繁体   English   中英

如何将Array类中的对象的Arraylist保存到SharedPreferencess中

[英]How to save Arraylist of Objects from Fragment class into SharedPreferencess

我在stackoverflow( LINKLINK )和其他网站中看到了类似的问题。 他们正在执行“活动”中的所有内容,因此没有遇到任何问题。

我有一个Activity和Fragment类。 我正在尝试从Fragment 将Object的ArrayList保存到共享的首选项中 以下是我尝试过的

            SharedPreferences prefs = getActivity().getSharedPreferences("SHARED_PREFS_FILE", Context.MODE_PRIVATE);
            SharedPreferences.Editor editor = prefs.edit();
            try {
               editor.putString("taggedFriends",ObjectSerializer.serialize(taggableFriends));

            } catch (IOException e) {
                e.printStackTrace();

它在ObjectSerializer中显示错误

**Cannot resolve symbom 'ObjectSerializer'** 

我试过了

getActivity.ObjectSerializer.serialize(..);

但是错误没有消失。 帮帮我,我现在该怎么办。

谢谢您为我花费时间。

尝试这个:

最后编辑:

在这种情况下:

 static class YourObject
{
    private String _name;

    public YourObject(String name)
    {
        this._name = name;  
    } 
}


YourObject yourObject = new YourObject(myName);
ArrayList<YourObject> foo = new ArrayList<YourObject>();
foo.add(yourObject);

将ArrayList转换为JSONArray:

  JSONArray mJSONArray = new JSONArray(foo);

然后保存JSONArray:

 SharedPreferences.Editor editor = prefs.edit();
 editor.putString("yourStringName", mJSONArray.toString());

字符串到JSONArray:

SharedPreferences prefs = getSharedPreferences("SHARED_PREFS_FILE",   Context.MODE_PRIVATE);
String myJSONArrayString = prefs.getString("yourStringName", "");
JSONArray jsonArray = new JSONArray(myJSONArrayString);

JSONArray到ArrayList:

ArrayList<String> list = new ArrayList<String>();     
   for (int i=0;i<jsonArray.length();i++){ 
    list.add(jsonArray.get(i).toString());
   } 

我希望这能解决您的问题。

首先将Gson添加到您的gradle中:

compile 'com.google.code.gson:gson:2.2.4'

将您的列表转换为Json String,如下所示:

List<String> foo = new ArrayList<String>();
foo.add("Item1");
foo.add("Item2");
foo.add("Item3");

String json = new Gson().toJson(foo );

并将其保存到共享首选项,如下所示:

SharedPreferences.Editor mEditor = mPrefs.edit();
mEditor.putString("yourKey", json);

当您要使用时,请从pref读取已保存的json字符串:

String json = mPrefs.getString("yourKey", "");

将您的Json字符串转换为如下所示的对象列表。 在示例中,我使用了String。

ArrayList<String> foo = (ArrayList<String>) new Gson().fromJson(json,
                    new TypeToken<ArrayList<String>>() {
                    }.getType());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM