我用Gson
从SharedPreferences
加载数据时遇到问题。我有Product
类的ArrayLists
对象。我想保存它们,然后加载它们。下面是我的loadList
方法:
public void loadList(ArrayList list, String name){
SharedPreferences sharedPreferences = getSharedPreferences(PREFS, MODE_PRIVATE);
Gson gson = new Gson();
String json = sharedPreferences.getString(name, null);
Type type = new TypeToken<ArrayList<Product>>() {}.getType();
list = gson.fromJson(json, type);
//Toast.makeText(this, ""+list.size(), Toast.LENGTH_SHORT).show();
if(list == null){
list = new ArrayList<>();
}
}
当我使用这个没有参数的方法时,一切都很好。但是当我试图将ArrayList
作为参数发送时,它就不起作用了,并且list加了下划线。
1条答案
按热度按时间mcdcgff01#
假设有一个Json文件,如下所示:
要解析这个json,需要有一个model类,在本例中有Product:
在这个例子中,我已经在assets文件夹中保存了预定义的json文件,但是在你的例子中,你是从SharedPreference中阅读它的。我认为这是导致这个问题的原因。因为在成功地从json中读取之后,我能够在required List中解析json。
你可以参考下面的方法,它可以给予你一些关于解析的想法。
输出量:
如果你需要更多的帮助,你需要提供json文本和产品型号的代码。我希望它能帮助你解决你的问题。