首页 > 解决方案 > 如何使用 Kotlin 过滤 RecyclerView?

问题描述

我刚开始使用 kotlin 和 room 数据库,在我的片段中,我有一个RecyclerView和一个EditText我将用作搜索RecyclerView. RecyclerView 的适配器在我的ViewModelobservable 内,我实际上已经为我设置了一个 TextWatcher,EditText但是由于 RecyclerView 的数据来自我的房间数据库,我应该如何设置过滤?

当 EditText 为空时,我应该从 LiveData observable 中返回项目。

这是我的片段代码:

private lateinit var recyclerView: RecyclerView
private lateinit var txtSearch: EditText
private val articoliViewModel: ArticoliViewModel
    get() = (activity as MainActivity).articoliViewModel

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

    recyclerView = view.findViewById(R.id.recyclerView)
    txtSearch = view.findViewById(R.id.txtSearch)

    val adapter = ArticoliListAdapter()
    recyclerView.adapter = adapter
    recyclerView.layoutManager = LinearLayoutManager(activity)

    articoliViewModel.articoli.observe(viewLifecycleOwner) { articoli ->
        // Update the cached copy of the words in the adapter.
        articoli.let { adapter.submitList(it) }
    }

    txtSearch.addTextChangedListener(object : TextWatcher {
        override fun afterTextChanged(s: Editable?) {

        }

        override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {

        }

        override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {

        }
    })

}

标签: androidkotlinandroid-recyclerview

解决方案


推荐阅读