TextWatchers,OnClickListeners等

时间:2014-10-10 12:17:49

标签: android onclicklistener textwatcher

只是想知道是否有关于如何将它们放入代码中使用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感到好奇。

2 个答案:

答案 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个。

如果TextWatcheronClickListener需要一些配置(例如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的任何注释,但它有onClickListeneronItemClickListeneronItemLongClickListener等。您可以使用一个函数进行多个{{1}使用注释。