带有 Textwatcher 的 AutoCompleteTextview android
AutoCompleteTextview with Textwatcher android
我有一个关于 AutoCompleteTextview 的小问题
textwatcher.
我有 AutoCompleteTextview 用于 Suggestion.The 数据来自 API 端。我输入的每个新词都会调用 API,它会从 ApI 端获得响应,然后,建议的显示下拉菜单是 shown.So,基本上代码在 AddTextWatcher 侦听器。
但是当我点击特定建议时,正在调用 AddTextwatcher,它会调用 ApI 并再次显示建议!所以它就像
-在 AutoCompleteTextview 中写入 >> Api 正在被调用 >> 填写数据 >> 显示建议 >> 然后再次单击建议 >> 显示建议。
帮我解决这个问题。
提前致谢。
基本不难
这个 Post 为这个 Post 保存我的 day.Thanks。
http://blog.hackerkernel.com/2015/12/30/autocompleteedittext-with-dynamic-data-from-json/
声明变量:
private var textWatcher : TextWatcher? = null
private var selectedItemId: String? = null
初始化声明的变量并将文本观察器应用为:
textWatcher = 对象:TextWatcher {
override fun afterTextChanged(char: Editable?) { }
override fun beforeTextChanged(char: CharSequence?, p1: Int, p2: Int, p3: Int) {}
override fun onTextChanged(char: CharSequence?, p1: Int, p2: Int, p3: Int) {
if(selectedItemId!=null){
return
}
callApi()
}
}
收到来自API的响应时:
val adapter = ArrayAdapter(requireActivity(),
R.layout.custom_spinner_item, R.id.item_text_view, itemList!!)
mBinding.AutoCompleteTextview.setAdapter(适配器)
mBinding.AutoCompleteTextview.error = null
mBinding.AutoCompleteTextview.removeTextChangedListener(textWatcher)
mBinding.AutoCompleteTextview.showDropDown()
mBinding.AutoCompleteTextview.setOnItemClickListener { adapterView, view, position, l ->
selectedItemId = adapter.getItem(position)!!.id!!.toString()
mBinding.AutoCompleteTextview.clearFocus()
}
最后一步:
mBinding.AutoCompleteTextview.setOnFocusChangeListener { 视图,b ->
如果(二){
mBinding.AutoCompleteTextview.addTextChangedListener(textWatcher)
}
}
我有一个关于 AutoCompleteTextview 的小问题 textwatcher.
我有 AutoCompleteTextview 用于 Suggestion.The 数据来自 API 端。我输入的每个新词都会调用 API,它会从 ApI 端获得响应,然后,建议的显示下拉菜单是 shown.So,基本上代码在 AddTextWatcher 侦听器。
但是当我点击特定建议时,正在调用 AddTextwatcher,它会调用 ApI 并再次显示建议!所以它就像
-在 AutoCompleteTextview 中写入 >> Api 正在被调用 >> 填写数据 >> 显示建议 >> 然后再次单击建议 >> 显示建议。
帮我解决这个问题。 提前致谢。
基本不难
这个 Post 为这个 Post 保存我的 day.Thanks。
http://blog.hackerkernel.com/2015/12/30/autocompleteedittext-with-dynamic-data-from-json/
声明变量:
private var textWatcher : TextWatcher? = null private var selectedItemId: String? = null
初始化声明的变量并将文本观察器应用为:
textWatcher = 对象:TextWatcher { override fun afterTextChanged(char: Editable?) { }
override fun beforeTextChanged(char: CharSequence?, p1: Int, p2: Int, p3: Int) {} override fun onTextChanged(char: CharSequence?, p1: Int, p2: Int, p3: Int) { if(selectedItemId!=null){ return } callApi() } }
收到来自API的响应时:
val adapter = ArrayAdapter(requireActivity(), R.layout.custom_spinner_item, R.id.item_text_view, itemList!!) mBinding.AutoCompleteTextview.setAdapter(适配器)
mBinding.AutoCompleteTextview.error = null mBinding.AutoCompleteTextview.removeTextChangedListener(textWatcher) mBinding.AutoCompleteTextview.showDropDown() mBinding.AutoCompleteTextview.setOnItemClickListener { adapterView, view, position, l -> selectedItemId = adapter.getItem(position)!!.id!!.toString() mBinding.AutoCompleteTextview.clearFocus() }
最后一步:
mBinding.AutoCompleteTextview.setOnFocusChangeListener { 视图,b -> 如果(二){ mBinding.AutoCompleteTextview.addTextChangedListener(textWatcher) } }