[英]Not sure how to handle insert method's return type
不確定如何處理插入方法的返回類型。
@Dao
interface ProductDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insertAlll( product:List<Product>):List<Product>
}
override fun getFactoriProduct(): Observable<List<Product>> {
return Observable.create { emitter ->
api.getProductRemote()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
if (it != null) {
emitter.onNext(db.productDao().insertAlll(it))
Timber.e("request->$it")
}
}, {
emitter.onNext(db.productDao().getProduct())
it.printStackTrace()
Timber.e("ErrorRequest->$it")
})
}
}
活動.kt
fun init() {
mainViewmodel.getProduct().subscribe {
val adapter = ProductAdapter(it)
RecyclerView2.layoutManager = LinearLayoutManager(this, LinearLayout.HORIZONTAL, false)
RecyclerView2.adapter = adapter
adapter.update(it)
}.addTo(this.CompositeDisposable)
如何處理插入方法的返回類型。 公共抽象 java.util.List insertAll(@org.jetbrains.annotations.NotNull()
通常,當您在有空間的情況下使用 rxjava 時,您所做的是觀察數據庫的變化,這樣無論何時從數據庫中插入或刪除數據,您都會獲得更新數據的新 Flowable 或 observable。
所以首先將它包含在您的應用程序 gradle 文件中
應用程序/build.gradle
implementation 'androidx.room:room-rxjava2:2.1.0-alpha06'
這將幫助您直接從房間返回數據流。
現在在您的 Daos 中您可以進行以下更改
道.kt
@Dao
interface Dao{
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insertAlll(product:List<Product>):Single<List<Int>>
@Query("Select * from YOUR_TABLE_NAME")
fun getAll():Flowable<List<Product>> // return a flowable here because this will be triggered whenever your data changes
}
現在在您的視圖模型中獲取數據
視圖模型.kt
val data = MutableLiveData<List<Product>>;
db.dao().getAll() // will fetch a new data after every insertion or change
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
{ data.postValue(it) },
{ e -> e.printstacktrace() }
))
// This is just to insert the list of produts
db.dao().insertAll(listProduct)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
{// Do nothing },
{ e -> e.printstacktrace() }
))
現在在您的 Activity 中,您可以通過觀察數據來更新您的 UI
活動.kt
viewModel.data.observe(this, Observer {
//update your recycler view adapter here
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.