Как мне исправить ошибку с занесением данных в базу данных?
Есть следующий код, который позволяет получить запрос из сети:
fun getCatalog(myCallback:OnRequestFinishedListener) {
val network=getRetrofit(BASE_URL_PIXABAY).create(paxabayRequest::class.java).getScriptInfo(
API_KEY_PIXABAY,"yellow+flowers","photo")
network.enqueue(object : Callback<paxabayPOJO> {
override fun onResponse(call: Call<paxabayPOJO>, response: Response<paxabayPOJO>) {
val res= response.body()?.hits
var count=0
while(count<10) {
items.add(hitPOJOinItemCatalog(res?.get(count)))
count++
}
myCallback.loadFromOnResponse(items)
Log.d("listCATALOG",items.toString())
}
override fun onFailure(call: Call<paxabayPOJO>, t: Throwable) {
//TODO обработать неудачный запрос
}
})
Log.d("catalogInNetwork",items.toString())
}
Данную функцию я вызываю в своем презентере я использую следующую функцию для обратного вызова первой функции и пытаюсь записать полученные данные в Room(всё действо в ветке else)
fun loadCatalog() {
if (sp.contains(IS_A_FIRST_LOAD) && sp.getString(IS_A_FIRST_LOAD,"def")!=null) {
//загружаю из бд
}
else {
val network=network.getCatalog(object : OnRequestFinishedListener {
override fun loadFromOnResponse(res: MutableList<itemCatalogs?>) {
Log.d("res",res.toString())
CoroutineScope(Dispatchers.IO).launch {
db.getDb().itemCatalogsDao()?.insert(itemCatalogs(0, "1", "#", "$")) //НЕ РАБОТАЕТ!
//db.addCatalogInBD(res) //добавление полученных данных в бд
}
}
})
sp.edit().putString(IS_A_FIRST_LOAD, NOT_FIRST).apply()
}
}
Проблема в следующем - данные в Log.d("res",res.toString()) видны,то они категорически отказываются записываться в Room. Причем я вешал корутину для фоновой работы и сверху запроса, сразу после else и внутри. и даже вместе. Но запись в Room не идёт. Запись проходит вне метода loadFromOnResponse. Прощу помощи, так как казалось бы такое простое действие как достать данные из onResponse ретрофита тратят столько времени и не должны вызывать такие трудностей.