SearchView菜单中的自定义建议

时间:2017-10-23 04:25:34

标签: android kotlin

我的searchview(工具栏)中有一个menu。它在我的Recycler视图中执行搜索查询,它工作正常。我需要向searchview添加自定义搜索建议,我找不到任何方法将其添加到默认的searchview菜单项。我已经分享了菜单项和搜索查询的代码。

菜单XML文件:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
        android:id="@+id/actionSearch"
        android:title=""
        android:icon="@drawable/ic_search"
        app:actionViewClass="android.support.v7.widget.SearchView"
        app:showAsAction="always|collapseActionView"/>
    <item
        android:id="@+id/actionAdd"
        android:title=""
        android:icon="@drawable/ic_add"
        app:showAsAction="always|collapseActionView"/>
    <item
        android:id="@+id/actionImport"
        android:orderInCategory="100"
        android:title="Import from phone"
        app:showAsAction="never"/>
    <item
        android:id="@+id/actionExport"
        android:orderInCategory="100"
        android:title="Export as VCF"
        app:showAsAction="never" />
    <item
        android:id="@+id/actionSettings"
        android:orderInCategory="100"
        android:title="Settings"
        app:showAsAction="never" />

</menu>

搜索查询:

private fun search(searchView: SearchView) {
        searchView.queryHint = "Search Here"
        searchView.setIconifiedByDefault(false)
        searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
            override fun onQueryTextSubmit(query: String): Boolean = false
            override fun onQueryTextChange(newText: String): Boolean {
                initRecentRecyclerView()
                mAdapter2.getFilter().filter(newText)
                recentAdapter.getFilter().filter(newText)
                return true
            }})
        MenuItemCompat.setOnActionExpandListener(search, object : MenuItemCompat.OnActionExpandListener {
            override fun onMenuItemActionExpand(item: MenuItem): Boolean {
                initRecentRecyclerView()
                return true
            }

            override fun onMenuItemActionCollapse(item: MenuItem): Boolean {
                recentRecyclerView.visibility = View.GONE
                return true
            }
        })
        searchView.setOnFocusChangeListener({ _: View, b: Boolean ->
            if(!b){
                recentRecyclerView.visibility = View.GONE
            }
        })
        searchView.setOnCloseListener{
            recentRecyclerView.visibility = View.GONE
            true
        }
        searchView.setOnQueryTextFocusChangeListener({ view: View, b: Boolean ->
            if(!b){
                try {
                    recentRecyclerView.visibility = View.GONE
                }catch(e: Exception){}
            }
        })
    }

actionSearch是我的searchView的id,searchView是我在kotlin代码中使用的引用。我需要在searchview中显示一系列建议。希望有人可以帮助我!

0 个答案:

没有答案