[英]Android Data Binding Library lambda for custom Listener
这段代码工作得很好:
适配器代码:
@BindingAdapter({"app:onClick"})
public static void setOnClick(My view, View.OnClickListener onClickListener)
{
view.addOnClickListener(onClickListener);
}
Xml代码:
app:onClick="@{ (v) -> view.onClick(v) }"
但我需要像这样制作自定义监听器:
适配器代码:
@BindingAdapter({"app:onClose"})
public static void setOnClose(My view, My.OnCloseListener onCloseListener)
{
view.addOnCloseListener(onCloseListener);
}
Xml代码:
app:onClose="@{ (x, y) -> view.onClose(x, y) }"
听众代码:
public interface OnCloseListener
{
void onClose(My x, int y);
}
在这种情况下应用程序不编译(不是很大的惊喜:(),甚至可以使用lambda与自定义监听器?
gradle 2.2.0版本可以:
public interface ITest {
void apply(String apply);
}
@BindingAdapter({"test"})
public static void testAdapter(View view, ITest test){
}
public interface IViewModel extends Observable {
void accept(String string);
}
<layout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="vm"
type="com.example.mvvm.IViewModel"
/>
</data>
<View
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:test="@{vm::accept}"
/>
</layout>
也许这是一个旧版本的数据绑定库,它会导致您的错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.