Привязки данных с настраиваемыми слушателями в настраиваемом представлении

Я пытаюсь связать событие в пользовательском представлении с новой библиотекой привязки данных Android, но столкнулся с проблемой.

Вот соответствующая часть моего пользовательского представления:

public class SuperCustomView extends FrameLayout {
    private OnToggleListener mToggleListener;

    public interface OnToggleListener {
        void onToggle(boolean switchPosition);
    }

    public void setOnToggleListener(OnToggleListener listener) {
        mToggleListener = listener;
    }
    .../...
 }

Я пытаюсь использовать этот пользовательский вид и связатьonToggle событие со следующим:

<data>
    <variable
        name="controller"
        type="com.xxx.BlopController"/>
</data>

<com.company.views.SuperCustomView
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       app:onToggle="@{controller.toggleStrokeLimitation}"
       app:custom_title="Blah"
       app:custom_summary="Bloh"
       app:custom_widget="toggle"/>

кудаtoggleStrokeLimitation это метод на контроллере:

public void toggleStrokeLimitation(boolean switchPosition) {
    maxStrokeEnabled.set(switchPosition);
}

Я получаю эту ошибку при компиляции:

> java.lang.RuntimeException: Found data binding errors.
****/ data binding error ****msg:Cannot find the setter for attribute 'app:onToggle' with parameter type java.lang.Object. file:/path/to/androidapp/app/src/main/res/layout/fragment_stroke.xml loc:36:35 - 36:67 ****\ data binding error ****

Я пытался использоватьandroid:onToggle вместоapp:onToggle но получите ту же ошибку.

При чтениираздел обязательных событий документаЯ чувствую, что могу подключить любой метод от контроллера кonToggle событие.

Обертывают ли рамкиcontroller.toggleStrokeLimitation методы вSuperCustomView.OnToggleListener? Любой намек на вид магии, которая стоит за существующимonClick обеспечено рамками?

Ответы на вопрос(2)

Ваш ответ на вопрос