使用共享首选项在我的应用程序中保存arrayListOf。我正在将数组转换为哈希集并保存它,但当我加载它时,我无法将它转换回arrayListOf。我尝试过TypedArray((和toArray((,但都没有解决问题。正在获取以下错误。
必需:kotlin.collections.ArrayList/*=java.util.ArrayList*/找到:(可变(集合<字符串>?
使用以下方法尝试加载哈希集并进行转换。
var sharedPreferences = getSharedPreferences(SHARED_PREFS, MODE_PRIVATE)
var places = arrayListOf<String>()
var loadSet = sharedPreferences.getStringSet("key", null)
places = loadSet
go.setOnClickListener{
thread {
val place = newLocation.text.toString()
var stringCounter = counter.toString()
if(place !in places){
places.add(place)
//editor.putStringSet("key", places)
//editor.commit()
var sharedPreferences = getSharedPreferences(SHARED_PREFS, MODE_PRIVATE)
var editor = sharedPreferences.edit()
set.add(place)
editor.putStringSet("key", set);
editor.commit();
Log.d("set", set.toString())
var loadSet = sharedPreferences.getStringSet("key", HashSet<String>())?.toList()
Log.d("load", loadSet.toString())
places = loadSet as ArrayList<String>
}
arrayListOf
不是类型。这是一个函数。类型是ArrayList,但通常只需要更抽象的List或MutableList,这取决于您使用它的方式。对于那些类型,您可以使用set.toList()
或set.toMutableList()
。
如果您有一个现有的ArrayList或MutableList,您也可以执行list.addAll(set)
。