嗨,我有一个项目的列表,我从数据源中检索,然后我在可观察的地图上应用,将数据存储到ROOM。
它设法将它添加到表中,但当我试图检索它的LiveData时,它似乎没有通知我的观察者结果。
有明确的数据在表中,我的查询工作,因为我改变了返回时间从LiveData到简单的列表,这工作得很好
这是我的数据类
@Entity
data class Item(
@PrimaryKey
val id:String,
val title: String,
val description: String,
val imgUrl: String,
val usageRules : List<String>,
)
这是我的DAO,它公开了一个func,可以添加所有项目列表
@Dao
interface MyDao {
@Insert(onConflict = OnConflictStrategy.IGNORE)
fun saveAllItems(itemList: MutableList<Item>)
@Query("SELECT * FROM items")
fun getAllItems(): LiveData<MutableList<Item>>
}
我的DB类
@Database(entities = arrayOf(Item::class), version = 1, exportSchema = false)
@TypeConverters(UsageRulesTypeConverter::class)
abstract class MyDatabase : RoomDatabase() {
abstract fun getProductDao(): MyDao
}
以下是我如何将数据插入数据库:
@Inject
lateInt val database : MyDatabase
override fun getAllItems(): Single<LiveData<MutableList<Item>>> {
//retrieve new data using rertrofit
networkController.getItems().map { responseItems ->
saveAllItems(responseItems )
getItems()
}
@Transaction
fun saveAllItems(allItems: ItemsDataSource) {
database.getProductDao().saveAllItems(allItems.loadedItems)
database.getProductDao().saveAllItems(allItems.savedItems)
database.getProductDao().saveAllItems(allItems.expiredItems)
database.getProductDao().saveAllItems(allItems.unloadedItems)
}
fun getItems() : LiveData<MutableList<Item>>{
return database.getProductDao().getAllItems()
}
我的数据源检索了4个项目列表,然后我将它们保存在一个实体/表中,但LiveData没有通知我的UI?
视图模型:
override fun getUnloadedOffers(): LiveData<MutableList<ProductOffer>> {
if (!this::itemsLiveData.isInitialized) {
itemsLiveData= MutableLiveData()
//get data from network or database
itemDelegator.getItems()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ items->
itemsLiveData= items
})
}
return itemsLiveData
}
用户界面
viewModel = ViewModelProviders.of(this, viewModelFactory).get(MyViewModel::class.java)
viewModel.getItems().observe(this, Observer {
items->
items?.let {
adapter = SomeAdapter(items)
itemsRecyclerView.adapter = adapter
adapter.notifyDataSetChanged()
}
})
保存数据收集时,尝试使用vararg
而不是List
。
@Insert(onConflict = OnConflictStrategy.IGNORE)
fun saveAllItems(vararg itemList: Item)
然后,您可以使用列表中的*
(也称为扩展运算符
)调用此方法,如下所示
saveAllItems(*responseItems.toTypedArray())
函数getUnloadedOffers()
是否返回空的可变列表?我不确定将items
传递到itemslvedata
是否有效,因为观察LiveData是在bg线程上运行的(如果我没弄错的话)
我在运行Jenkins 1.571。我正在使用构建我的项目。我有两次执行以分叉模式执行两个testng套件。 生成日志显示: 我的相关pom.xml:
问题内容: 我敢肯定这很简单,但我是JQuery的新手。我正在使用JQuery插件验证电子邮件地址,此方法有效,代码为: 然后,我想做的是使用ajax帖子发布电子邮件地址,同样,此代码在没有验证程序的情况下也可以正常工作: 我似乎无法做的是将两者结合在一起,这样,如果电子邮件有效,它将随后发布。非常感谢您提供帮助。 非常感谢 问题答案: 可以通过传入具有各种配置选项的对象来进行配置。在这种情况下,
我有一个发布管道,它结合了两个构建管道工件来创建完整的版本。完成后,我需要能够下载此任务的结果。 我运行存档任务来压缩结果,但我不知道如何将其保存到可以使用Azure Pipeline代理下载的位置。 有没有可以触发下载的任务,或者我可以将其保存为神器? 谢谢
我对pact还是一个新手,我正在尝试使用pact,但是我遇到了一个问题,无法从Pact-Verify发回提供程序的测试结果。 “sbt”pact-verify--host localhost--port 8081“”结果: [...]正在尝试从pact broker获取pact,网址为:http://localhost:8080/pacts/provider/provider/consumer/c
我正在尝试设置CI / CD,但没有太多的运气。我的目标是通过 构建一个 .net 网络项目,并将其部署到 应用程序。 我现在在哪里? 创建了< code>vsts-ci.yml文件,如下所示: 我有一个构建定义,如下所示: 有了这个,我的第一步运行正确。顺便说一下代理池是。 然后,我创建了一个如下发布管道: 作为第1阶段的任务(在工件步骤之后运行的部分),我有以下内容: 我已经将构建与主分支提交
问题内容: 我有一个似乎无法满足的简单要求:我有一个产品页面。产品具有供应商,供应商输入是带有自动完成功能的文本字段。如果用户输入数据库中不存在的供应商,则需要添加它。要添加它,我在.load()页面上有一个DIV并调用了我的/ Vendor / Create控制器方法。该方法的视图使用: 这应该通过ajax发布我的表单,完成后调用Javascript。我遇到的问题是,提交后,我的整个页面都会刷新