android绑定应用程序中的Cusom事件属性:onMyEvent

时间:2016-07-01 12:43:57

标签: android mvvm data-binding android-databinding android-binding-adapter

有没有办法使用绑定库将自定义onSomeEventListener连接到属性?为onClick提供的示例很简单,它们都使用'on'前缀和单方法接口侦听器,那么'add'前缀和更复杂的场景呢?

想象一下,我想在RecyclerView.addOnItemTouchListener上使用自定义连线逻辑,确定从SimpleOnItemTouchListener.onTouchEvent触摸子视图并将其传递给我的视图模型,我该如何实现?

我想结束这样的事情:

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

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

使用BindingAdapter和InverseBindingListener通知绑定框架有关您的自定义属性更新时是否有类似的方法?

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

1 个答案:

答案 0 :(得分:1)

经过一番调查和反复试验,我找到了解决方案。

当然,您需要激活BindingActivity中的Fragment并为其设置ClickHandler的实例,并为其设置变量它位于xml的{​​{1}}。假设你已经知道,我会继续:

魔术的一部分是ClickHandler使用app:addOnItemTouchListener

RecyclerView

另一部分是<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