双向数据绑定转换器
Two-way data binding Converter
我正在尝试为我的 password
双向数据绑定字段使用从 CharArray 到 String 的转换器。
var password = ObservableField<CharArray>()
继 doc 之后:
public class Converter {
@InverseMethod("stringToCharArray")
public static String charArrayToString(
ClearableEditText view,
char[] oldValue,
char[] value
){
return value.toString();
}
public static char [] stringToCharArray(
ClearableEditText view,
String oldValue,
String value
){
return value.toCharArray();
}
}
在 XML 文件中我是这样使用的:
android:text="@={Converter.charArrayToString(viewModel.password)}"
但我仍然遇到以下异常:
error: Could not find inverse method: public static char[] stringToCharArray(ClearableEditText, char[], java.lang.String)
public static String charArrayToString(
^
您必须为双向数据绑定提供 BindingAdapter
和 InverseBindingAdapter
。尝试使用下面的绑定适配器。
@BindingAdapter("android:text")
public static void bindArrayInText(TextView view, char[] value) {
view.setText(String.valueOf(value));
}
@InverseBindingAdapter(attribute = "android:text")
public static char[] getArrayFromText(TextView view) {
String value = view.getText().toString();
return value.toCharArray();;
}
并使用喜欢
android:text="@={viewModel.password}"
这对我来说很好,也许在重新启动 AS 之后:
public class Converter {
@InverseMethod("toCharArray")
public static String toString(char [] value) {
if(value == null) return "";
return value.length == 0 ? "" : String.valueOf(value);
}
public static char [] toCharArray(String value) {
if(value == null) return "".toCharArray();
return value.isEmpty() ? "".toCharArray() : value.toCharArray();
}
}
我正在尝试为我的 password
双向数据绑定字段使用从 CharArray 到 String 的转换器。
var password = ObservableField<CharArray>()
继 doc 之后:
public class Converter {
@InverseMethod("stringToCharArray")
public static String charArrayToString(
ClearableEditText view,
char[] oldValue,
char[] value
){
return value.toString();
}
public static char [] stringToCharArray(
ClearableEditText view,
String oldValue,
String value
){
return value.toCharArray();
}
}
在 XML 文件中我是这样使用的:
android:text="@={Converter.charArrayToString(viewModel.password)}"
但我仍然遇到以下异常:
error: Could not find inverse method: public static char[] stringToCharArray(ClearableEditText, char[], java.lang.String)
public static String charArrayToString(
^
您必须为双向数据绑定提供 BindingAdapter
和 InverseBindingAdapter
。尝试使用下面的绑定适配器。
@BindingAdapter("android:text")
public static void bindArrayInText(TextView view, char[] value) {
view.setText(String.valueOf(value));
}
@InverseBindingAdapter(attribute = "android:text")
public static char[] getArrayFromText(TextView view) {
String value = view.getText().toString();
return value.toCharArray();;
}
并使用喜欢
android:text="@={viewModel.password}"
这对我来说很好,也许在重新启动 AS 之后:
public class Converter {
@InverseMethod("toCharArray")
public static String toString(char [] value) {
if(value == null) return "";
return value.length == 0 ? "" : String.valueOf(value);
}
public static char [] toCharArray(String value) {
if(value == null) return "".toCharArray();
return value.isEmpty() ? "".toCharArray() : value.toCharArray();
}
}