AndroidKotlin返回到setOnQueryTextListener

jfgube3f  于 2023-01-28  发布在  Android
关注(0)|答案(1)|浏览(154)

下面是一个android SerchView小部件查询处理。我在其中应用了一个简单的验证器。当var success = true时,代码通过。否则返回setOnQueryTextListener。但我不能正确地这样做。这里我使用return@setOnQueryTextListener。但一个错误。

placeSearch.setOnQueryTextListener(object : SearchView.OnQueryTextListener,
            android.widget.SearchView.OnQueryTextListener {

            override fun onQueryTextChange(qString: String): Boolean {
                return true
            }
            override fun onQueryTextSubmit(qString: String): Boolean {
                placeSearch.hideKeyboard()
                showProgress()
                var success = true
                val placeResult = Validator.Search.place(qString.trim())

                if (!placeResult.success){
                    context?.onError(getString(placeResult.message, placeResult.arg))
                    success = false
                }
                if (!success) {
                    hideProgress()
                    return@setOnQueryTextListner
                }

                loadLocations(false, qString)
                return true
            }
        })
jyztefdp

jyztefdp1#

具有此扩展功能:

fun SearchView.setupQueryTextSubmit(callback: (String?) -> Unit) {
    setOnQueryTextListener(object : SearchView.OnQueryTextListener {
        override fun onQueryTextSubmit(query: String?): Boolean {
            onTextSubmit.invoke(query)
            return true
        }

        override fun onQueryTextChange(query: String?): Boolean {
            return false
        }
    })
}

像这样使用它:

searchView.setupQueryTextSubmit { text->
        //use here your text
    }

相关问题