本文介绍了双向数据绑定转换器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用从 CharArray 到 String 的转换器作为我的 password 双向数据绑定字段.

I'm trying to use a converter from CharArray to String for my password two-way databinding field.

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 文件中我是这样使用的:

In XML file I used it like this :

android:text="@={Converter.charArrayToString(viewModel.password)}"

但我仍然遇到以下异常:

But I still got the bellow exception :

error: Could not find inverse method: public static char[] stringToCharArray(ClearableEditText, char[], java.lang.String)
    public static String charArrayToString(
                         ^

推荐答案

这对我来说很好用,也许在重启 AS 后:

This work fine for me, maybe after restarting 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();
    }
}

这篇关于双向数据绑定转换器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-06 02:18