<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注释来指示当使用哪个方法时在双向绑定表达式中使用它
请给我解决方案。
答案 0 :(得分:1)
您需要声明@BindingAdapter
将String
值设置为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
用法