Android环境
kotlin_version ='1.3.20'
compileSdkVersion 28
我有一个类型为 ArrayAdapter
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 ()正常工作,甚至适配器也正常工作,但是我无法使过滤器正常工作。
答案 0 :(得分:0)
添加此行
adapter.notifyDataSetChanged()
在filter语句之后。
答案 1 :(得分:0)
通知适配器以进行数据更改:
searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
override fun onQueryTextChange(newText: String): Boolean {
adapter.filter.filter(newText)
adapter.notifyDataSetChanged()
return true
}
override fun onQueryTextSubmit(query: String): Boolean {
return false
}
})
答案 2 :(得分:-1)
解决方案
这个问题的解决方案是在代码范围定义本身中。对于可能偶然遇到类似情况的人们,请确保检查 searchView.setOnQueryTextListener()并确保将其排除在可能用于填充适配器列表的任何循环之外。 :)