【发布时间】:2020-04-06 16:01:15
【问题描述】:
-
我有一个 myArrayList,它将按其保存的排序顺序存储和恢复。但是代码并没有这样做。为什么?
ArrayList<String> myArrayList // save: SharedPreferences prefs = PreferenceManager .getDefaultSharedPreferences(getBaseContext()); SharedPreferences.Editor edit; edit = prefs.edit(); edit.putStringSet("mydata", new LinkedHashSet<String>(myArrayList)); edit.commit(); // read: myArrayList = new ArrayList<String>(PreferenceManager .getDefaultSharedPreferences(getBaseContext()).getStringSet( "mydata", new LinkedHashSet<String>())); adapterAppList = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, myArrayList); 有没有更好的方法可以存储 myArrayList 的值并恢复到原来保存的排序顺序?
【问题讨论】:
-
您无法在 SharedPreferences 中保存对象。您可以将对象转换为字符串,然后将其保存并在获取时将字符串转换为对象。
-
不可能:“无法在 SharedPreferences 中保存对象”,因为我可以取回数据,但不是按照原始顺序
-
你可以用gson序列化arrayList之类的字符串
-
SharedPreferences将其作为普通的Set处理,它本质上没有顺序。它不关心你使用什么实现,但即使你使用的是有序的Set,它也不是。
标签: android sorting arraylist sharedpreferences store