android - Kotlin 中 SearchView 的过滤器

标签 android kotlin filter android-arrayadapter searchview

安卓环境

kotlin_version = '1.3.20'
compileSdkVersion 28

我有一个类型为 ArrayAdapter适配器,它在应用 Activity 中表示为 ListView。如何让 SearchView 的过滤器起作用?

Activity.xml

<android.support.v7.widget.SearchView
        android:id="@+id/searchView">
        ...

</android.support.v7.widget.SearchView>


<ListView
        android:id="@+id/listView"
        ...
 />

Activity.kt

   ...

         searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {

                    override fun onQueryTextChange(newText: String): Boolean {

                        adapter.filter.filter(newText)

                        return true
                    }

                    override fun onQueryTextSubmit(query: String): Boolean {
                        // task HERE
                        return false
                    }

                })

    ...

所以 setOnQueryTextListener() 可以正常工作,甚至 adapter 也可以正常工作,但我无法让过滤器正常工作。

最佳答案

添加这一行

adapter.notifyDataSetChanged()

过滤语句之后。

关于android - Kotlin 中 SearchView 的过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55537368/

相关文章:

android - 如何在 Exoplayer 2 中播放 .ts

android - Kotlin - 比较字符串时,运算符 '==' 不能应用于 'Editable!' 和 'String'

c++ - C++上的字符串过滤

java.lang.IllegalStateException : The specified child already has a parent. 您必须先在 child 的 parent 上调用 removeView()

java - 从 Socket.IO 线程内更新 View

android - Kotlin 中的 java.lang.ClassCastException : CustomAdapter cannot be cast to android. widget.ArrayAdapter

android - 使用 Jetpack Compose 的深层链接导航到可组合项

java - 如何使用 JavaFX MediaPlayer 多次播放同一音频剪辑

ios - 在对象数组的字典中应用过滤器

hadoop - 哪些文件被映射器忽略为输入?