在数据绑定Android中传递OnFocusChange中的视图

时间:2016-09-06 18:50:34

标签: android

我正在尝试使用onFocusChange函数中的Listener绑定传递视图但是会出现以下错误

  

回调android.view.View.OnFocusChangeListener#onFocusChange有2个方法,但lambda定义为1.它应该有0或相同数量的参数。

请有人帮我找到正确的方法来实现这一点。

    <variable
        name="user"
        type="com.webage.www.vco_address.User" />

    <variable
        name="obj"
        type="com.webage.www.colin.Validations" />



</data>
    <EditText
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="82dp"
        android:text="@={user.name}"
        android:onFocusChange="@{(view)->obj.saveClick(view, user.name)}" />

验证

public class Validations {
    public void saveClick(View view, String name){
        Log.v("saveClick",name);
    }
}

2 个答案:

答案 0 :(得分:6)

我认为错误消息的措辞错误。 onFocusChange()有两种方法没有任何意义,因为它 一种方法。更有可能的是,问题是onFocusChange()有两个参数,一个View和一个boolean。您已声明lambda只接受一个参数。只需向lambda添加第二个参数。

答案 1 :(得分:1)

用于xml

app:onFocusChangeListener = "@{viewModel::onTargetFocusChanged}"

用于程序代码

fun onTargetFocusChanged(view: View, hasFocus: Boolean){
        ...
}