带有 TextChangedListener 的 RetroLambda
RetroLambda with TextChangedListener
大家好,我是 RetroLambda 的新手。现在我将它与 Runnable、OnClickListener 等一起使用。问题是:是否可以像 onTextChangeListener 一样将 RetroLambda 与 类 一起使用?例如如何 lambda 这个
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) {
}
});
谢谢。
Retrolambda 将 Java 8 个功能移植到以前的 JVM 版本。当您使用 lambda 而不是 Runnable
时,它称为自动 SAM 转换,其中 SAM 代表单一抽象方法。这意味着如果你有一个接口或一个抽象 class 和一个抽象方法,你可以用具有相同签名的 lambda 替换它。 TextWatcher
如您所见,具有三个抽象方法,并且不能用 lambda 代替。
如果你想使用 lambda,你可以为每个 TextWatcher
方法定义单一方法接口,并实现将接受这些接口的辅助方法,每个方法一个,创建一个 TextWatcher
将委托调用接口,将TextWatcher
添加到TextView
.
大家好,我是 RetroLambda 的新手。现在我将它与 Runnable、OnClickListener 等一起使用。问题是:是否可以像 onTextChangeListener 一样将 RetroLambda 与 类 一起使用?例如如何 lambda 这个
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) {
}
});
谢谢。
Retrolambda 将 Java 8 个功能移植到以前的 JVM 版本。当您使用 lambda 而不是 Runnable
时,它称为自动 SAM 转换,其中 SAM 代表单一抽象方法。这意味着如果你有一个接口或一个抽象 class 和一个抽象方法,你可以用具有相同签名的 lambda 替换它。 TextWatcher
如您所见,具有三个抽象方法,并且不能用 lambda 代替。
如果你想使用 lambda,你可以为每个 TextWatcher
方法定义单一方法接口,并实现将接受这些接口的辅助方法,每个方法一个,创建一个 TextWatcher
将委托调用接口,将TextWatcher
添加到TextView
.