我正在制作一个带有回收站视图的阅读列表,其中包含标题和复选框,指示我是否已完成阅读。
我做了一个函数,可以过滤掉所有未读完的内容。
但是在过滤之后,列表号被打破了。在我更改片段后,数字恢复正常
如何在不更改片段的情况下修复数字?
应用过滤器
binding.applyFilter.setOnClickListener {
viewModel.getFinishedReading()
findNavController().navigateUp()
}
查看模型 (DAO 查询更新 allWebtoon)
var allWebtoon: Flow<List<Webtoon>> = webtoonDao.getAllWebtoon()
fun getFinishedReading() {
allWebtoon = webtoonDao.getFinishedReading()
}
道
@Query("SELECT * FROM webtoon ORDER BY id ASC")
fun getAllWebtoon(): Flow<List<Webtoon>>
@Query("SELECT COUNT(*) FROM webtoon WHERE is_finished = 1")
fun getFinishedReadingCount(): Flow<Int>
回收器视图适配器 (我使用了 onBindViewHolder 的位置)
binding.apply {
webtoonNumber.text = "${pos + 1}. "
webtoonTitle.text = webtoon.title
finishRead.isChecked = finished
}
MainFragment 设置回收器视图数据
override onCreateView().... {
lifecycleScope.launch {
setupRecyclerView()
}
}
private suspend fun setupRecyclerView() {
recyclerView = binding.recyclerView
recyclerView.apply {
adapter = itemAdapter
layoutManager = LinearLayoutManager(context)
}
viewModel.allWebtoon.collect { webtoon ->
itemAdapter.submitList(webtoon)
}
}