我有两个简单的不同类,一个扩展另一个。我的第一堂课是:
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;
}
但问题是当我从共享偏好中读取此数组时,我无法将其成员投射给人们!但为什么?! 同时我很确定我的共享偏好正常。 请帮帮我......
答案 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);
}