私のプロジェクトではRoomをローカルデータベースソリューションとして使用しています。型コンバータは、次のようなものになりますので、私はプロジェクトに型コンバータを追加した特定のオブジェクトタイプのすべてのリストについては :Android:タイプコンバータの作り方(for Room)全般のコトルのオブジェクトリスト
@TypeConverter
fun convertListToString(video: List<VideoType>): String {
val videoArray = arrayOfNulls<VideoType>(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<VideoType> {
val videoArray = videoString.split(strSeparator.toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()
val videos = ArrayList<VideoType>()
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 <reified T> convertStringToList(string: String): List<T> {
val objectArray = string.split(strSeparator.toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()
val objects = ArrayList<T>()
val gson = Gson()
for (i in 0 until objectArray.size - 1) {
objects.add(gson.fromJson(objectArray[i], T::class.java))
}
return objects
}
が働いて、私にエラー占いを与えるのAndroid Studioでコンパイルエラーが発生していない:型コンバータは
誰でもアイデアパブリックである必要がありますどのようにI私の部屋のTypeConverterのジェネリックを使用できますか?
リファレンス、それがために問題を解決しませんルームでのtypeConvertorsの使用。リスト上の拡張を使用している場合、@typeConverterで注釈をつけていても)文字列に変換したい場合。 "このフィールドをデータベースに保存する方法を理解できません。" –