3

바인딩 라이브러리를 사용하여 onSomeEventListener 사용자 정의 속성을 속성에 연결하는 방법이 있습니까? onClick에 제공된 예제는 간단하며 모두 'on'접두사 및 단일 메서드 인터페이스 수신기를 사용하며 '접두사 추가'및 더 복잡한 시나리오는 어떻게해야합니까?android bindings 앱의 Cusom 이벤트 속성 : onMyEvent

RecyclerView.addOnItemTouchListener에서 맞춤 와이어를 사용하고 싶습니다. 하위보기가 SimpleOnItemTouchListener.onTouchEvent에서 건드린 것을 확인하고이를 내보기 모델에 전달하면 어떻게 할 수 있습니까?

나는 이런 식으로 뭔가와 끝까지하려는 : BindingAdapter 및 InverseBindingListener를 사용하여 사용자 지정 속성 업데이트에 대한 바인딩 프레임 워크를 알릴 때 접근하는 비슷한 일이

<RecyclerView 
    app:onItemTouch="@{handlers::recyclerViewOnItemTouch}"/> 

public class Handlers { 
    public void recyclerViewOnItemTouch(View view) { ... } 
} 

있습니까?

@BindingAdapter("app:someAttrChanged") 
public static void setListener(View view, InverseBindingListener listener) 

답변

1

몇 가지 조사와 시행 착오 끝에 해결책을 찾았습니다.

은 물론, 당신은 당신의 Activity 또는 FragmentBinding을 활성화하고 그것에 ClickHandler의 인스턴스를 설정하고 ClickHandler 대한 xml에 대한 변수를해야합니다. 당신이 이미 알고 있다고 가정 할 때, 나는 계속 것 : 마법의

한 부분은 RecyclerView에 대한 app:addOnItemTouchListener을 사용하고 있습니다 :

public class ClickHandler { 

    public RecyclerView.OnItemTouchListener touchListener; 

    public ClickHandler(){ 
     //initialize the instance of your touchListener in the constructor 
     touchListener = new RecyclerView.SimpleOnItemTouchListener(){ 
      @Override 
      public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e)  { 
       //allow clicks 
       return true; 
      } 

      @Override 
       public void onTouchEvent(RecyclerView rv, MotionEvent e) { 
       //check if it is working/check if we get the touch event: 
       Log.d("onTouchEvent", "RecView: " + rv.getId() + "\nMotionEvent: "+ e.getAction()); 
      } 
     }; 
    } 

    /* last but not least: a method which returns the touchlistener. 
     You can rename the method, but don't forget to rename the attribute in the xml, too. */ 
    public RecyclerView.OnItemTouchListener touchListener(){ 
     return touchListener; 
    } 
} 
:

<android.support.v7.widget.RecyclerView 
    android:id="@+id/rec_view" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:addOnItemTouchListener="@{clickHandler.touchListener}"/> 

다른 부분은 ClickHandler.class입니다