AutoCompleteTextView:检测何时关闭下拉列表并且未选择项目

时间:2016-11-09 22:54:44

标签: android autocompletetextview

我需要知道用户何时点击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事件触发。

有人建议在没有列表选择的情况下检测解雇的方法吗?

1 个答案:

答案 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 中使用一种验证器,它会检查输入文本是否有效,基于验证您可以向用户指示输入的输入是否有效。