Android - 在适配器中过滤来自数据库的数据

Android - filter data from database in an adapter

我正在学习 Kotlin 并尝试将一些直接来自(房间)数据库的数据过滤到我的适配器中以显示它们。

这是我的代码(来自片段中,包含带适配器的回收视图):

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        val adapter = LatestReleaseListAdapter {
        }
        binding.recyclerView.layoutManager = LinearLayoutManager(this.context)
        binding.recyclerView.adapter = adapter

        viewModel.allItems.observe(this.viewLifecycleOwner) { items ->
            //Here I'd like to remove the items that has been seen already
            items.filter { item -> !item.hasBeenSeen }
            items.let {
                adapter.submitList(it)
            }
        }  

如您所见,代码非常简单。我只是想过滤布尔值“hasBeenSeen”为真的列表元素。我只想显示布尔值“hasBeenSeen”为假的那些。我怎样才能做到这一点?

filter 的调用将过滤项目,return 一个新集合将仅包含过滤后的项目。 所以你可以这样做

val filteredItems = items.filter { item -> !item.hasBeenSeen }
adapter.submitList(filteredItems)

或者保持简短

adapter.submitList(items.filter { item -> !item.hasBeenSeen })