【发布时间】:2020-11-27 15:38:12
【问题描述】:
以下代码允许在我的搜索视图中显示一个小建议窗口:
我正在寻找一种在用户单击菜单上的搜索项时默认在开头显示此视图的方法。
有没有办法强制这种行为?
val from = arrayOf(SearchManager.SUGGEST_COLUMN_TEXT_1)
val to = intArrayOf(R.id.item_label)
val cursorAdapter = SimpleCursorAdapter(context, R.layout.search_item, null, from, to, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER)
val suggestions = listOf("Apple", "Blueberry", "Carrot", "Daikon")
searchView.suggestionsAdapter = cursorAdapter
searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
override fun onQueryTextSubmit(query: String?): Boolean {
hideKeyboard()
return false
}
override fun onQueryTextChange(query: String?): Boolean {
val cursor = MatrixCursor(arrayOf(BaseColumns._ID, SearchManager.SUGGEST_COLUMN_TEXT_1))
query?.let {
suggestions.forEachIndexed { index, suggestion ->
if (suggestion.contains(query, true)) {
cursor.addRow(arrayOf(index, suggestion))
}
}
}
cursorAdapter.changeCursor(cursor)
return true
}
})
searchView.setOnSuggestionListener(object: SearchView.OnSuggestionListener {
override fun onSuggestionSelect(position: Int): Boolean {
return false
}
override fun onSuggestionClick(position: Int): Boolean {
hideKeyboard()
val cursor = searchView.suggestionsAdapter.getItem(position) as Cursor
val selection = cursor.getString(cursor.getColumnIndex(SearchManager.SUGGEST_COLUMN_TEXT_1))
searchView.setQuery(selection, false)
// Do something with selection
return true
}
})
【问题讨论】:
标签: android kotlin android-actionbar android-adapter searchview