【发布时间】:2020-12-07 10:47:04
【问题描述】:
我有一个Activity,我有一个LiveData,我想在ListView 中显示它。
我的代码sn-p:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_records)
this.recordListView.emptyView = recordListEmptyView
viewModel = ViewModelProvider(this).get(RecordsViewModel::class.java)
recordDAO = AppDatabase.getDb(this).recordDao()
recordDAO.findAllSync().observe(this) {
//display livedata in listview after getting added
//adapter = ArrayAdapter(this,list_items,syncedRecords)
//listview.adapter = adapter
}
}
添加记录后,我想在我有评论的地方显示记录。
我可以让它与普通的findAll() 一起工作,并将我的适配器设置为findAll() 的返回值,但我无法让它与LiveData 一起工作。
我的 DAO 类:
@Dao
interface RecordDAO{
@Update(onConflict = REPLACE)
fun update(record:Record) : Int
@Insert(onConflict = IGNORE)
fun persist(record: Record): Long
@Delete
fun delete(record: Record): Int
@Delete
fun deleteAll(records: List<Record>)
@Query("SELECT * FROM record")
fun findAll(): List<Record>
@Query("SELECT * FROM record")
fun findAllSync(): LiveData<List<Record>>
@Query("SELECT * FROM record WHERE id = :id")
fun findById(id: Int): Record?
}
【问题讨论】:
标签: android kotlin android-room dao