android:历史编辑文本

时间:2012-05-23 19:13:16

标签: android android-widget


首要摘要:

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但是没有用。另外,我不想使用接口将两个侦听器合并为一个。 感谢

1 个答案:

答案 0 :(得分:1)

这里的类似问题可能会有所帮助。基本上总结是否定的,你不能。

Android - Two onClick listeners and one button

他使用一些肮脏的黑客来解决它,但他几乎完全做了你不想做的事。