在共享首选项中以不同的结构保存Arraylist

时间:2018-06-20 17:58:47

标签: java android arraylist

我有那个对象:

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结构... 肮脏,但是可以这样...

0 个答案:

没有答案