如何解决使用Android Paging Library&Room时如何添加复选框
我正在使用Android Paging Library + Room Library。
@Entity
data class Customer {
@PrimaryKey(autoGererate = true)
val id: Long,val name: String
}
@Dao
interface CustomerDao {
@Query("SELECT * FROM Customer")
fun get(): DataSource.Factory<Int,Customer>
}
当用户单击客户项目时,我想在PagedListAdapter中选中。 而且我想在片段中提供所有项目检查功能。 选中的项目存储在viewModel中。
但是,我不想像下面那样使用getItem(int:Position)和notifyItemChanged函数。
// in fragment
viewModel.selected.observe(lifecyclerOwner,Observer {
adapter.selectedCustomers = it
})
// in adapter
var selectedCustomers: List<Customer>()
set(value) {
for (i in until itemCount) {
getItem(i)?.id?.let {
if (selected item id is changed) {
notifyItemChanged(i)
}
}
}
}
那是因为getItem在AsyncPagedListDiffer中调用了mPagedList.loadAround(index)
我可以将Customer更改为CheckableCustomer并使用DiffUtil.ItemCallback而不是notifyDataSetChanged吗?
data class CheckableCustomer {
val customer: Customer,val isChecked: Boolean
}
如何将DataSource.Factory
我想将Customer更改为CheckableCustomer并使用PagedListAdapter
或者,使用会议室数据库数据源和复选框是否有任何好的解决方案?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。