앤드류스 데이터 바인딩 (이) 이벤트 핸들러

안드로이드 데이터 바인딩 (가) 기본 사용법 
안드로이드 데이터 바인딩 (이) 이벤트 처리 (종이) 
안드로이드 데이터 바인딩 (3 개) 관찰 가능한  
안드로이드 데이터 바인딩 (D) 사용자 지정 특성을  
안드로이드 데이터 바인딩 (오) 바인딩 사용자 정의보기의 방법  
안드로이드 데이터 바인딩 (육) 글고 타이 TextChangedListener 및 FocusChangeListener에게 주어진

데이터 바인딩 이벤트 처리 방법은 두 가지가있다 
1. 메서드 참조 
2. 리스너 바인딩은

방법 참조

일반적으로 핸들러 또는 발표자 클래스와 정의하는 방법 서명과 같은 방법으로 리스너, 다음 XML 호출을 정의합니다.

public class MyHandlers {
    public void onClick(View view) { ... }
}
<TextView 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@{user.firstName}"
    android:onClick="@{handlers::onClick}"/>

리스너 바인딩

바인딩 리스너는 람다의 형식을 취하며 유사한 방법을 언급하지만, 또는 매개 변수 람다 메소드를 호출 방법은 원래의 리스너 서명을 수행 할 필요가 없습니다 여부.

public class Presenter {
    public void onClick(Task task){}
}
<TextView 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@{user.firstName}"
    android:onClick="@{() -> presenter.onClick(viewModel)}"/>

어떤 방법 서명 제한의 부재, 다음과 같은 두 가지 가능한 표현입니다

android:onClick="@{(view) -> presenter.onClick(viewModel)}"
public class Presenter {
    public void onClick(View view, Task task){}
}

android:onClick="@{(view) -> presenter.onClick(view, viewModel)}"

CheckBox의 또 하나의 예를

<CheckBox 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    android:onCheckedChanged="@{(cb, isChecked) -> 
    presenter.completeChanged(viewModel, isChecked)}" />

당신이 상황에서 세 골을 조건식 (? :)하지만, 단 하나 개의 이벤트 처리를 사용하는 경우 다른 이벤트 처리는 ¥에 공백을 대체 할 수

android:onClick="@{(v) -> v.isVisible() ? doSomething() : void}"
게시 24 개 원래 기사 · 원 찬양 5 ·은 20000 +를 볼

추천

출처blog.csdn.net/qq_26923265/article/details/82627319