0

好的,这是我的情况。我有一个 AutoCompleteTextView,它必须有一个 OnKey 的侦听器,这很好,但是如果“键入”的视图是实际的文本字段,而不是自动完成选择之一,我只想使用 onKey 。如果选择被击中,我将在 onItemClickedListener 中处理它。所以,我的代码看起来像这样:

公共类 MyFragment 扩展 Fragment 实现 OnKeyListener {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    Log.i(LOG_TAG, "Fragment Inflated");
    View view = inflater.inflate(R.layout.my_layout, container, false);
    final  AutoCompleteTextView autoComplete = (AutoCompleteTextView)v.findViewById(R.id.my_autocomplete_id);
    autoComplete.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
           //just setting the text from the selection
            String s =  adapterView.getItemAtPosition(i).toString();
            autoComplete.setText(s);

        }
    });
    return view;
}


@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
    if(v instanceof AutoCompleteTextView)
    {
        AutoCompleteTextView av = (AutoCompleteTextView)v;
        //I need to be able to tell if this is the text field or a selection
        // from the autocomplete!!
    }

}

OnKey 在 itemclicked 之前触发,这是预期的(不要认为我可以改变它)所以我真正需要能够做的是,正如我上面所说,可靠地检测编辑文本区域是否被“键入”或者它是否是一个选择。

我在调试器中搜索并检查了 AutoCompleteTextView 对象,但没有看到任何表明我需要的东西。

有人对我如何处理这个有任何建议吗?正如我所说,我必须能够处理被点击的文本区域的 onKey。如果我可以在 OnKey 之前以某种方式处理 selectedItem 的点击,我可以设置一个标志,但我再次认为这是不可能的。任何建议将不胜感激。非常感谢!

4

1 回答 1

0

所以我不喜欢回答我自己的问题,但我找到了答案,不知道我是怎么错过的:如果你在文本字段中,AutoCompleTextView.getListSelection() 将返回 -1。

于 2013-10-17T20:42:39.660 回答