2014-10-10 58 views
1

只是想知道是否有任何有关使用TextWatchers,OnClickListeners等方面的最佳做法,关于如何将它们放在代码中。TextWatchers,OnClickListeners等

你做到以下几点:

textBox.addTextChangedListener(new TextWatcher() 
    { 
     public void afterTextChanged(Editable s) 
     {    
      // some code here 
     } 

     public void beforeTextChanged(CharSequence s, int start, int count, int after) 
     { 
      // and/or here 
     } 

     public void onTextChanged(CharSequence s, int start, int before, int count) 
     { 
      // and/or even here 
     } 
    }); 

或者这将是最好有T​​extWatcher等作为变量,并调用它像:

textBox.addTextChangedListener(myTextWatcher); 

我理解的第二会好得多对于可重用性,但很好奇,如果在这个例子中只有一个实例,TextWatcher。

回答

1

我认为是实现你的主类的界面,然后有这样的事情的另一种选择:

textBox.addTextChangedListener(myTextWatcher); 

总共有3选项和我使用其中3个。

如果TextWatcheronClickListener需要一些配置(如身份证或行号),并多次使用,创建我自己的类,并做一些事情是这样的:

textBox1.addTextChangedListener(new MyTextWatcher(1, "Some Text")); 
textBox2.addTextChangedListener(new MyTextWatcher(2, "Some Other Text")); 
textBox3.addTextChangedListener(new MyTextWatcher(3, "Some Text 4")); 

除此之外,如果它是一次性的事情,是小的,我是这样的:

mButton.setOnClickListener(new OnClickListener() { 
    .... 
}); 

而且我也用ButterKnife了很多。据我所知,它没有任何注释TextWatchers,但它有onClickListener,onItemClickListener,onItemLongClickListener等。您可以使用一个函数多个Views使用注释。

+0

感谢您提供此信息。详细和易于遵循。当我得到一些时间的时候,我会看看ButterKnife。再次感谢! – 2014-10-10 13:22:17

+0

没问题。我认为在你的代码中将接口变成像'myTextWatcher'这样的变量会使代码更难读。如果你多次使用同一个观察器,这可能是有用的。在这种情况下,实现与主类的接口并使用'this'作为变量也是有意义的。 – tasomaniac 2014-10-10 13:25:20

1

如果您对其他文本框再次需要相同的逻辑,那么这种方法很好,可重用。

textBox.addTextChangedListener(myTextWatcher); 

否则你可以简单的匿名类,你上面

textBox.addTextChangedListener(new TextWatcher() 
{ 
    public void afterTextChanged(Editable s) 
    {    
     // some code here 
    } 

    public void beforeTextChanged(CharSequence s, int start, int count, int after) 
    { 
     // and/or here 
    } 

    public void onTextChanged(CharSequence s, int start, int before, int count) 
    { 
     // and/or even here 
    } 
}); 

其显示高达您和您的要求。两者都适用于不同的场景。 希望这将有所帮助:)祝你好运:)

+0

非常感谢您的意见! – 2014-10-10 13:21:10

相关问题