<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable name="user"
type="com.daimler.user.persistence.User"/>
<variable name="callback"
type="com.daimler.user.ui.UserClickCallback"/>
</data>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:paddingBottom="@dimen/row_padding"
android:paddingLeft="@dimen/activity_margin"
android:paddingRight="@dimen/activity_margin"
android:paddingTop="@dimen/row_padding"
android:onClick="@{() -> callback.onUserClick(user)}">
public class UserClickCallback {
public void onUserClick(User v) {
}
}
我写了这样的代码,它看起来没问题,但它显示错误:
错误:(36,28)无法找到属性&#39; android:onClick&#39; 在android.widget.RelativeLayout上使用参数类型lambda。
有人帮忙吗?
答案 0 :(得分:5)
我遇到了同样的问题。
我删除了“Rebuild Project
”文件夹,然后点击了“public class Singleton {
private static Singleton INSTANCE = null;
private Singleton() {
init();
}
public static Singleton getInstance() {
if (INSTANCE == null) {
INSTANCE = new Singleton();
}
return(INSTANCE);
}
private void init() {
Log.d(TAG, "is this firing");
}
}
”。
这对我有用。
答案 1 :(得分:2)
更改此行。希望这个帮助。
android:onClick="@{() -> callback.onUserClick(user)}">
要
android:onClick="@{(view) -> callback.onUserClick(user)}">
答案 2 :(得分:1)
我得到了答案。默认的绑定适配器不起作用所以我添加了app:onclick binding:
@BindingAdapter({"app:onClick"})
public static void setOnClick(View view, View.OnClickListener clickListener) {
view.setOnClickListener(clickListener);
view.setClickable(true);
}
然后我像这样更改了xml:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:paddingBottom="@dimen/row_padding"
android:paddingLeft="@dimen/activity_margin"
android:paddingRight="@dimen/activity_margin"
android:paddingTop="@dimen/row_padding"
app:onClick="@{() -> callback.onUserClick(user)}">