RetroLambda与TextChangedListener

时间:2016-04-03 13:48:47

标签: java android retrolambda

您好,我是RetroLambda的新手。现在我正在使用它与Runnable,OnClickListener等。问题是:是否可以将RetroLambda与onTextChangeListener这样的类一起使用?例如如何lambda this

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) {

        }
    });

谢谢。

1 个答案:

答案 0 :(得分:4)

Retrolambda将Java 8功能扩展到以前的JVM版本。当您使用lambda而不是Runnable时,它称为自动SAM转换,其中SAM代表单一抽象方法。这意味着如果您有一个接口或具有单个抽象方法的抽象类,则可以使用具有相同签名的lambda替换它。 TextWatcher有三种抽象方法,你可以看到,它不能用lambda替换。

如果你想使用lambdas,你可以为每个TextWatcher方法定义单方法接口,并实现接受这些接口的辅助方法,每个方法一个,创建一个TextWatcher,将调用委托给界面,并将TextWatcher添加到TextView