【问题标题】:Android - filter data from database in an adapterAndroid - 从适配器中的数据库过滤数据
【发布时间】:2022-01-07 11:06:49
【问题描述】:

我正在学习 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”为假的那些。我怎样才能做到这一点?

【问题讨论】:

    标签: android kotlin filter android-recyclerview android-room


    【解决方案1】:

    filter 的调用将过滤项目并返回一个仅包含过滤项目的新集合。 所以你可以做这样的事情

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

    或者保持简短

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-19
      • 1970-01-01
      • 2010-12-06
      • 1970-01-01
      相关资源
      最近更新 更多