在不更改片段的情况下刷新回收器视图

问题描述 投票:0回答:0

我正在制作一个带有回收站视图的阅读列表,其中包含标题和复选框,指示我是否已完成阅读。

我做了一个函数,可以过滤掉所有未读完的内容。
但是在过滤之后,列表号被打破了。在我更改片段后,数字恢复正常

如何在不更改片段的情况下修复数字?

应用过滤器

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)
    }
}
android kotlin android-fragments android-recyclerview
© www.soinside.com 2019 - 2024. All rights reserved.