我在我的项目中使用Room作为本地数据库解决方案。 对于我添加类型转换器到项目中,以便类型转换器会是这个样子的某个对象类型的每个列表:Android:如何为所有通用类型转换器(for Room)制作Kotlin中的对象列表
@TypeConverter
fun convertListToString(video: List): String {
val videoArray = arrayOfNulls(video.size)
for (i in 0..video.size - 1) {
videoArray[i] = video[i]
}
var str = ""
val gson = Gson()
for (i in videoArray.indices) {
val jsonString = gson.toJson(videoArray[i])
str = str + jsonString
if (i < videoArray.size - 1) {
str = str + strSeparator
}
}
return str
}
@TypeConverter
fun convertStringToList(videoString: String): List {
val videoArray = videoString.split(strSeparator.toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()
val videos = ArrayList()
val gson = Gson()
for (i in 0 until videoArray.size - 1) {
videos.add(gson.fromJson(videoArray[i], VideoType::class.java))
}
return videos
}
唯一的问题是,我有一大堆不同类型的列表的那个需要转换,所以目前我只是复制这个代码的每一种类型。我想使用泛型,但到目前为止还没有弄清楚如何去做。
例如使用类似:
@TypeConverter
inline fun convertStringToList(string: String): List {
val objectArray = string.split(strSeparator.toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()
val objects = ArrayList()
val gson = Gson()
for (i in 0 until objectArray.size - 1) {
objects.add(gson.fromJson(objectArray[i], T::class.java))
}
return objects
}
不能正常工作,并导致了Android Studio的编译错误,给我一个错误说服力:类型转换器必须是公共
任何人的想法如何我可以为我的房间类型转换器使用泛型?