Я хочу спросить о моем коде. Ошибка не отображается, когда я вставляю данные в базу данных, но когда я пытаюсь получить все, я просто получаю пустой массив.
Я не знаю, где это идет не так. Я надеюсь, что кто-то может дать мне решение этой проблемы.
Я впервые использую Библиотеку комнат.
Это мой интерфейс для Дао:
@Dao
interface SampleDao {
@Query("SELECT * from Sample")
fun getAll():Single<List<Sample>>
@Insert
fun insertSampel(sample:Sample)
Это мой синглтонDB:
@Database (entities = [Sample::class], version = 1)
abstract class SingletonDB : RoomDatabase() {
abstract fun sampleDao():SampleDao
companion object {
private var INSTANCE:SingletonDB? = null
fun getInstance(context: Context):SingletonDB?{
if (INSTANCE == null){
synchronized(SingletonDB::class){
INSTANCE = Room.databaseBuilder(context.applicationContext,
SingletonDB::class.java, "db")
.build()
}
}
return INSTANCE!!
}
fun destroyInstance() {
INSTANCE = null
}
}
Это метод getAllData из базы данных комнаты:
override fun getAll() {
mDB.sampleDao().getAll()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(object : SingleObserver<List<Sample>> {
override fun onSuccess(t: List<Sample>) {
Log.i(TAG, t.toString())
}
override fun onSubscribe(d: Disposable) {
}
override fun onError(e: Throwable) {
Log.i(TAG, e.message)
}
})
}
Этот код используется для вставки данных в базу данных:
override fun insertSampel(id: Int, name: String, age: Int) {
val sample = Sample(id, name, age)
Completable.fromAction {
Thread {
Runnable {
mDB.sampleDao().insertSampel(sample)
}
}
}.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io()).subscribe(
object : CompletableObserver {
override fun onComplete() {
Log.i(TAG, "Complete")
}
override fun onSubscribe(d: Disposable) {
}
override fun onError(e: Throwable) {
Log.i(TAG, e.message)
}
}
)
}