带有 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.