保存在sharedpreferences

时间:2017-12-14 11:57:02

标签: java android

我有两个简单的不同类,一个扩展另一个。我的第一堂课是:

public class MyObject {}

没有任何内容。

和另一个:

public class People extends MyObject{
public  String UserId;

public void setUserId(String userId) {
UserId = userId;
}

public String getUserId() {
return UserId;
}
}

我只能从“MyObject”的arraylist中将MyObject强制转换为人物:

final People people = (People) myarray.get(position);
    //myarray is:ArrayList<MyObject> myarray

但在某个地方我必须将这个数组(我的意思是myarray)保存到共享偏好中,然后我在其他地方读取它。所以我通过这些方法保存并阅读它:

  public static void SavePreferencesMyObjectArraylist(Context context, String key, ArrayList<MyObject> arrayList) {

    SharedPreferences shared = PreferenceManager.getDefaultSharedPreferences(context);
    SharedPreferences.Editor editor = shared.edit();
    Type type = new TypeToken<List<MyObject>>() {}.getType();
    Gson gson = new Gson();
    String json = gson.toJson(arrayList,type);
    editor.putString(key, json);
    editor.apply();

}

public static ArrayList<MyObject> LoadPrefrencesMyObjectArraylist(Context context, String key) {
    SharedPreferences shared = PreferenceManager.getDefaultSharedPreferences(context);
    Type type = new TypeToken<List<MyObject>>() {}.getType();
    Gson gson = new Gson();
    String gsonString = shared.getString(key, "");
    ArrayList<MyObject> arrayList = gson.fromJson(gsonString, type);

    return arrayList;

}

但问题是当我从共享偏好中读取此数组时,我无法将其成员投射给人们!但为什么?! 同时我很确定我的共享偏好正常。 请帮帮我......

1 个答案:

答案 0 :(得分:0)

像这样试试

//存储您的对象

public void setList(List<String> list){
    String list_s = new Gson().toJson(list);
    editor.putString("key_Value", list_s);
    editor.commit();
}

//获取您的对象

public String[] getListDetails(){
    String stored_list = sharedPreferences.getString("key_value","");
    return new Gson().fromJson(stored_list, String[].class);
}