简体   繁体   English

SearchView建议适配器不会在Android中弹出

[英]SearchView suggestions adapter is not popping up in Android

I have a search menu item like this 我有一个像这样的搜索菜单项

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
            android:id="@+id/action_search"
            android:icon="@drawable/search_icon"
            android:title="Search"
            app:actionViewClass="android.widget.SearchView"
            app:showAsAction="always|collapseActionView"/>

</menu>

I am inflating this and then setting up listeners for SearchView like this 我正在膨胀这个,然后像这样为SearchView设置监听器

override fun onCreateOptionsMenu(menu: Menu?): Boolean {
        menuInflater.inflate(R.menu.search_menu_item, menu)
        return true
    }

    override fun onPrepareOptionsMenu(menu: Menu?): Boolean {
        val mSearchMenuItem = menu?.findItem(R.id.action_search)


        mSearchMenuItem?.setOnActionExpandListener(object : MenuItem.OnActionExpandListener{
            override fun onMenuItemActionExpand(p0: MenuItem?): Boolean {
                return true
            }

            override fun onMenuItemActionCollapse(p0: MenuItem?): Boolean {
                return true
            }

        })

        searchView = mSearchMenuItem?.actionView as SearchView

        searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
            override fun onQueryTextSubmit(query: String): Boolean {
                samSearchViewModel.searchData(query)

                return false
            }

            override fun onQueryTextChange(newText: String): Boolean {
                if (newText.length >= 3) {
                    samSearchViewModel.searchData(newText)
                }
                return false
            }
        })

        searchView.setOnCloseListener(object : SearchView.OnCloseListener {
            override fun onClose(): Boolean {
                return false
            }
        })  

        return true
    }

Then I am trying to display it using a SimpleCursorAdapter like this after getting data back from the server. 然后我尝试在从服务器获取数据后使用类似的SimpleCursorAdapter显示它。

val strArr: Array<String?> = arrayOfNulls(t.datas?.size!!)
                        for(i in t.datas!!.indices){
                            strArr[i] = t.datas!![i]?.symbol
                        }

                        val searchManager = getSystemService(SEARCH_SERVICE) as SearchManager
                        searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()))
                        val to = intArrayOf(android.R.id.text1)
                        searchView.setIconifiedByDefault(false)
                        searchView.setSuggestionsAdapter(SimpleCursorAdapter(this@MainActivity,android.R.layout.simple_list_item_1,null,strArr,to,CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER))

So what's happening is, I am able to expand the SearchView, type in it and then I am also getting data back from the server but then the search suggestions list is not popping up. 所以发生了什么,我能够扩展SearchView,输入它然后我也从服务器返回数据,但随后搜索建议列表没有弹出。 It is just blank. 它只是空白。 What am I missing? 我错过了什么? Any help would be appreciated. 任何帮助,将不胜感激。 Thanks 谢谢

You may need to set Threshold . 您可能需要设置阈值

AutoCompleteTextView searchAutoCompleteTextView = (AutoCompleteTextView) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
searchAutoCompleteTextView.setThreshold(3);

If you set Threshold to 3 that means it will start giving suggestions after typing first character 如果将阈值设置为3,则表示在键入第一个字符后它将开始提供建议

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM