好的,这是我的情况。我有一个 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 的点击,我可以设置一个标志,但我再次认为这是不可能的。任何建议将不胜感激。非常感谢!