如何将哈希集<String>转换为数组列表?



使用共享首选项在我的应用程序中保存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)

相关内容

  • 没有找到相关文章

最新更新