0

在我的 android 项目的主类中,我有大约六个侦听器,具有以下结构:

temp.addTextChangedListener(new TextWatcher() {

            public void afterTextChanged(Editable arg0) {

            }

            public void beforeTextChanged(CharSequence s, int arg1, int arg2, int arg3) { }
            public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { }

        });

但它有点杂乱无章......我想做的目标是创建一个通用类,例如称为 TextBox,它包含所有侦听器。按钮也是如此,它的听众。你明白吗?我怎样才能做到这一点?

有了这个系统,我可以这样调用一个方法:

temp.addTextChangedListener(TextBox.temp())
test.addTextChangedListener(TextBox.test())

如果我对自己的解释很糟糕,请告诉我。谢谢。

4

2 回答 2

0

在您计划实现的类(比方说 TextBox)中,根据需要创建尽可能多的方法,例如,在 TextWatcher 接口的这种情况下应该返回一个匿名实现,看看:

public class TextBox{
  public static TextWatcher temp(){
    return new TextWatcher() {
            public void afterTextChanged(Editable arg0) {

            }
            public void beforeTextChanged(CharSequence s, int arg1, int arg2, int arg3) { }
            public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { }
        };
  }
}

使用它:

temp.addTextChangedListener(TextBox.temp());

我不喜欢这种方法,但仍然希望它有所帮助......,我建议你阅读这篇文章:

http://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener.html

http://docs.oracle.com/javase/tutorial/uiswing/events/

在处理事件和侦听器时,他们会给你一些常见设计模式的想法......

于 2013-04-29T15:07:58.277 回答
0

定义具有所有侦听器的类:

Class Listeners {
    public class Listener1 extends EditView.TextChangedListener{

    ...

    }
}

然后根据需要实例化它们:

temp.addTextChangedListener(new Listeners.Listener1());
于 2013-04-29T14:59:02.700 回答