首要摘要:
class A extends AutoCompleteTextView {
public A() {
setOnKeyListner( ... new OnKeyLisnter() ... ); //listener 1
}
}
A obj;
obj.setOnKeyListener( ... new OnKeyListner() ... ); //listner 2
是否可以同时调用两个侦听器?现在我只收到来自听众2的消息。
我正在尝试使用从AutoCompleteTextView派生的历史记录构建编辑文本。该类有一个ArrayAdapter,只要按下回车键,它就会自动更新。到现在为止还挺好。但是,当从这个类创建的对象想要做的不仅仅是将文本添加到数据库时,我需要使用另一个onKeyListener。如果它这样做,则不会调用原始侦听器。当按下输入键时,有没有办法让两个都被调用?
class HistoryEditText extends AutoCompleteTextView {
ArrayAdapter<String> adapter;
public HistoryEditText(Context ctx) {
super(ctx);
setMaxLines(1);
setOnKeyListener(new aCommand());
List<String> myList = new LinkedList<String>();
adapter = new ArrayAdapter<String>(ctx,R.layout.lvtext, myList);
setAdapter(adapter);
}
private class aCommand implements OnKeyListener {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
(keyCode == KeyEvent.KEYCODE_ENTER)) {
String str = getText().toString();
setText(" ");
adapter.add(str);
adapter.notifyDataSetChanged();
return true;
}
return false;
}
}
}
其他地方:
HistoryEditText cmdField = new HistoryEditText(ctx);
cmdField.setOnKeyListener(... another listener ... )
我尝试在其中一个列表中返回false但是没有用。另外,我不想使用接口将两个侦听器合并为一个。 感谢
答案 0 :(得分:1)
这里的类似问题可能会有所帮助。基本上总结是否定的,你不能。
Android - Two onClick listeners and one button
他使用一些肮脏的黑客来解决它,但他几乎完全做了你不想做的事。