你好,我是RetroLambda的新手。现在,我正在与Runnable、OnClickListener等一起使用它。问题是: RetroLambda是否可以与onTextChangeListener这样的类一起使用?例如,如何对此进行评语
etmessage.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (count > 0) {
okmenubutton.setEnabled(true);
okmenubutton.getIcon().setAlpha(255);
} else {
okmenubutton.setEnabled(false);
okmenubutton.getIcon().setAlpha(130);
}
}
@Override
public void afterTextChanged(Editable s) {
}
});谢谢。
发布于 2016-04-03 21:38:28
Retrolambda将Java 8特性移植到以前的JVM版本。当您使用lambda而不是Runnable时,它被称为自动SAM转换,其中SAM代表单个抽象方法。这意味着,如果您有一个接口或一个具有单个抽象方法的抽象类,则可以用具有相同签名的lambda替换它。正如您所看到的,TextWatcher有三个抽象方法,不能用lambda替换它。
如果您想使用lambda,可以为每个TextWatcher方法定义单方法接口,并实现将接受这些接口的助手方法,每个方法一个,创建一个将调用委托给接口的TextWatcher,并将TextWatcher添加到TextView。
https://stackoverflow.com/questions/36386197
复制相似问题