只是想知道是否有关于如何将它们放入代码中使用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
}
});
或者最好将TextWatcher等作为变量并将其称为:
textBox.addTextChangedListener(myTextWatcher);
我理解第二个对于可重用性会好得多,但是对于在这个例子中是否只有一个实例TextWatcher感到好奇。
答案 0 :(得分: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
}
});
它取决于您和您的要求。两者都适用于不同的场景。 希望这会有所帮助:)祝你好运:)
答案 1 :(得分:1)
我认为还有另一种选择是在你的主类上实现接口然后有这样的东西:
textBox.addTextChangedListener(myTextWatcher);
总共有3个选项,我使用其中3个。
如果TextWatcher
或onClickListener
需要一些配置(例如id或行号)并且要多次使用,我会创建自己的类并执行以下操作:
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
等。您可以使用一个函数进行多个{{1}使用注释。