我需要知道用户何时点击AutoCompleteTextView下拉列表以便将其关闭(即他们通过选择列表中的项目来关闭弹出窗口)。我已经设置了setOnDismissListener(),如下所示:
mAutoView.setOnDismissListener(new AutoCompleteTextView.OnDismissListener() {
@Override
public void onDismiss() {
CharSequence msg = "isPerformingCompletion = " + mAutoView.isPerformingCompletion() +
" Item selected at = " + mAutoView.getListSelection();
Toast.makeText(getContext(), msg, Toast.LENGTH_LONG).show();
}
});
这样的OnItemClickListener:
private AdapterView.OnItemClickListener mAutocompleteClickListener
= new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// get selected item and pass it to result callback
}
};
onIismiss事件在onItemClick事件之前触发,不幸的是,&#34; isPerformingCompletion()&#34;也不是&#34; getListSelection()&#34;方法返回一个值,直到onItemClick事件触发。
有人建议在没有列表选择的情况下检测解雇的方法吗?
答案 0 :(得分:0)
下面的一段代码将检测到,如果用户关闭 autocompletetextview 的下拉菜单,然后 onDismiss 它将使用 Geocode API 检查所选输入,如果它有结果,则所选输入有效,否则输入无效,因此情况下,输入的文本将在位秒内消失。
mAutoView.setOnDismissListener {
try {
val fromLocationName = Geocoder(context).getFromLocationName(mAutoView.getText().toString(), 1)
if (fromLocationName != null && fromLocationName.isNotEmpty()) {
Log.d(TAG, "Address valid")
} else {
mAutoView.setText("")
Log.d(TAG, "Address not valid")
}
} catch (e: Exception) {
mAutoView.setText("")
Log.d(TAG, "Address not valid with Exception")
}
}
意味着您需要在 OnDismiss 中使用一种验证器,它会检查输入文本是否有效,基于验证您可以向用户指示输入的输入是否有效。