不能在数据绑定EditText整数值

时间:2017-05-19 09:49:35

标签: android layout android-edittext android-databinding

<EditText
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/cow_no_of_child_edittext"
    android:inputType="number"
    android:text="@={String.valueOf(cow.noOfChild)}" <- This atribute
    android:hint="@string/no_of_child"
    android:textSize="@dimen/text_size_22sp"/>

嗨,我在android中处理数据绑定时遇到问题。 EditText成功获取字符串值。但它不适用于Integer值。在Android Monitor Log中,我收到以下异常消息:

  

错误:(165,34)表达式java.lang.String.valueOf(cowNoOfChild)不能被反转:方法valueOf没有反转,你必须在方法中添加@InverseMethod注释来指示哪个方法应该在双向绑定表达式中使用它时使用   错误:(165,34)表达式java.lang.String.valueOf(cowNoOfChild)不能被反转:方法valueOf没有反转,你必须在方法中添加一个@InverseMethod注释来指示当使用哪个方法时在双向绑定表达式中使用它   错误:(165,34)表达式java.lang.String.valueOf(cowNoOfChild)不能被反转:方法valueOf没有反转,你必须在方法中添加一个@InverseMethod注释来指示当使用哪个方法时在双向绑定表达式中使用它

请给我解决方案。

1 个答案:

答案 0 :(得分:1)

您需要声明@BindingAdapterString值设置为android:text属性,并@InverseBindingAdapter返回值:

public class BindingUtils {

    @BindingAdapter("android:text")
    public static void setText(EditText view, String value) {
        view.setText(value);
    }

    @InverseBindingAdapter(attribute = "android:text")
    public static String getText(EditText view) {
        return view.getText().toString();
    }
}

另请参阅another example了解float用法