如何解决从RoomDatabase提取数据时出现Kotlin-Geting错误
从会议室数据库中获取数据时出现此错误。
连接失败:ENETUNREACH(网络无法访问)
这是我的应用程序的工作方式:
我有一个Api,可以从server提取数据。我正在使用改造来获取数据,然后在房间数据库中插入数据。
好吧,如果数据来自会议室数据库,为什么会发生此错误?当我关闭wifi以检查应用程序是否运行正常时,会发生此错误。
那么,我该怎么办?
代码:
我的存储库:
companion object {
private fun retrofit(): ApiClient {
return Retrofit.Builder()
.baseUrl("http://192.168.43.106/")
.addConverterFactory(GsonConverterFactory.create(GsonBuilder().create()))
.build()
.create(ApiClient::class.java)
}
suspend fun fetchAllData(repositoryCart: RepositoryCart): List<RoomTables> {
val retro = retrofit().getProduct()
insertDataToRoom(repositoryCart)
return retro
}
suspend fun insertDataToRoom (repositoryCart: RepositoryCart) {
repositoryCart.db.GetDao().insertList(retrofit().getProduct())
}
}
Api进行改装:
interface ApiClient {
@GET("SelectAllFromTableAndConvertToJson.php")
suspend fun getProduct() : List<RoomTables>
}
房间桌子:
@Entity(tableName = "cart")
data class RoomTables(
@PrimaryKey(autoGenerate = true) val id: Int?,@SerializedName("title")
@ColumnInfo val title: String,@SerializedName("price")
@ColumnInfo val price: String,@SerializedName("image")
@ColumnInfo val image: String,@ColumnInfo var amount: Int
)
dao:
@Query("SELECT * FROM cart")
fun getalldata(): LiveData<List<RoomTables>>
@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insertList(model: List<RoomTables>)
viewmodel:
val products = MutableLiveData<List<RoomTables>>()
fun setup() {
viewModelScope.launch(Dispatchers.Default){
products.postValue(RepositoryCart.fetchAllData(repository))
}
}
}
活动:
recycler_main.apply {
viewModel.products.observe(this@HomeActivity,Observer {
layoutManager = GridLayoutManager(this@HomeActivity,2)
adapter = RecyclerAdapterMain(it,this@HomeActivity)
})
}
viewModel.setup()
val swiperefresh = findViewById<SwipeRefreshLayout>(R.id.swipeRefreshMain)
swiperefresh.setOnRefreshListener(refreshListener)
任何帮助将不胜感激。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。