对于长瓷砖很抱歉,但我不知道我怎么会问。
我正在使用andoroid进行编程,我想要一个简单的方法来执行以下操作,而不必使用一堆覆盖和丑陋的代码:
这些都是例子:
基本上我希望能够轻松设置一个监听器并修改监听器将触发的方法,而不需要一堆匿名内部类和其他令人讨厌的东西。有许多衍生工具,每个都做自己预定义的事情是可以的,但我想避免重复代码并使其利用多态性。
我非常努力地使用接口,抽象方法和其他类似的技术,但这让我的头脑变得疯狂。
答案 0 :(得分:0)
您可能想要的是TextWatcher
How to use the TextWatcher class in Android?
以下是一个例子:
http://www.learn-android-easily.com/2013/06/using-textwatcher-in-android.html
您可以将TextView对象传递到其中,并监视用户输入的文本文本。但是,根据您描述的要求和一般用户的一般不可预测行为,即使这可能相当复杂。
答案 1 :(得分:0)
为什么不为具有事件监听器回调的自定义TextWatcher尝试这样的事情,您可以在文本更改后使用该回调:
public class CustomTextWatcher implements TextWatcher {
public interface TextChangedEventListener{
public void afterTextChanged(String newText);
}
private TextChangedEventListener eventListener;
public CustomTextWatcher(TextChangedEventListener eventListener){
this.eventListener = eventListener;
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
eventListener.afterTextChanged(s.toString());
}
}
现在实施......
EditText editText = (EditText)findViewById(R.id.my_et);
editText.addTextChangedListener(new CustomTextWatcher(new CustomTextWatcher.TextChangedEventListener() {
public void afterTextChanged(String newText) {
// set the text of the next EditText, which will trigger the next TextWatcher in the chain
}
}));
你仍然需要处理一个匿名的内部类,但如果你想为每个EditText定制,那么就没有办法解决这个问题。至少这会将内部类的数量从3减少到1并清理你需要查看的代码。