我有那个对象:
HashMap<String, ArrayList> vendorsFinal
我使用Gson保存在sharedpreferences中的:
SharedPreferences sharedPref = mActivity.getSharedPreferences(getString(R.string._app_db), Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
Gson gson = new Gson();
String json = gson.toJson(vendorsFinal);
editor.putString(getString(R.string._db_vendors), "");
editor.apply();
上述对象中的ArrayList是3个不同的arraylist:
ArrayList<HashMap<String, String>> db1
ArrayList<HashMap<String, String>> db2
ArrayList<HashMap<String, ArrayList<HashMap<String, String>>>> db3
这使我很难找到正确的方法来使用以下方法从sharedPreferences转换回它:
SharedPreferences sharedPrefDB = mActivity.getSharedPreferences(getString(R.string._app_db), Context.MODE_PRIVATE);
Gson gson = new Gson();
String jsonDB = sharedPrefDB.getString(getString(R.string._db_vendors), null);
Type type = new TypeToken<ArrayList<HashMap<String, ArrayList>>>() {}.getType();
return gson.fromJson(jsonDB, type);
任何帮助将不胜感激,因为我是第一次使用该TypeToken,因此很遗憾搜索该问题!
谢谢!
编辑:找不到一种“不错”的方法,所以我通过添加虚拟数据来更改db1和db2结构以匹配db3结构... 肮脏,但是可以这样...