Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Room Android-浮点、整数、双精度等数组-可以考虑为其添加类型转换器。_Android_Arrays_Android Room - Fatal编程技术网

Room Android-浮点、整数、双精度等数组-可以考虑为其添加类型转换器。

Room Android-浮点、整数、双精度等数组-可以考虑为其添加类型转换器。,android,arrays,android-room,Android,Arrays,Android Room,我只是从Room Android开始 我尝试保留一个模型,其中一个字段是数组: float[] values; 我在编译时遇到了以下错误: Error: Cannot figure out how to save this field into database. You can consider adding a type converter for it. 我创建了一个类型转换器: public static class ConverterFloatToString { @T

我只是从Room Android开始

我尝试保留一个模型,其中一个字段是数组:

float[] values;
我在编译时遇到了以下错误:

Error: Cannot figure out how to save this field into database. 
You can consider adding a type converter for it.
我创建了一个类型转换器:

public static class ConverterFloatToString {

    @TypeConverter
    public String JSONArrayfromFloatArray(Float[] values) {
        JSONArray jsonArray = new JSONArray(Arrays.asList(values));
        return jsonArray.toString();
    }

    @TypeConverter
    public float[] JSONArrayToFloatArray(String values) {
        try {
            JSONArray jsonArray = new JSONArray(values);
            float[] floatArray = new float[jsonArray.length()];
            for (int i = 0; i < jsonArray.length(); i++) {
                floatArray[i] = Float.parseFloat(jsonArray.getString(i));
            }
            return floatArray;
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return null;
    }
}
但我还是犯了同样的错误

Cannot figure out how to save this field into database. 
You can consider adding a type converter for it.

请问怎么了?

好的,我的类型转换器出错了

JSONArrayfromFloatArray(Float[] values) -> JSONArrayfromFloatArray(float[] values)
我把我的转换器改成这样:

public static class ConverterFloatToString {

    @TypeConverter
    public static String JSONArrayfromFloatArray(float[] values) {
        JSONArray jsonArray = new JSONArray();
        for (float value : values) {
            try {
                jsonArray.put(value);
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
        return jsonArray.toString();
    }

    @TypeConverter
    public static float[] JSONArrayToFloatArray(String values) {
        try {
            JSONArray jsonArray = new JSONArray(values);
            float[] floatArray = new float[jsonArray.length()];
            for (int i = 0; i < jsonArray.length(); i++) {
                floatArray[i] = Float.parseFloat(jsonArray.getString(i));
            }
            return floatArray;
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return null;
    }
}
公共静态类转换器floattostring{
@类型转换器
公共静态字符串JSONArrayfromFloatArray(float[]值){
JSONArray JSONArray=新的JSONArray();
用于(浮动值:值){
试一试{
jsonArray.put(值);
}捕获(JSONException e){
e、 printStackTrace();
}
}
返回jsonArray.toString();
}
@类型转换器
公共静态浮点[]JSONArrayToFloatArray(字符串值){
试一试{
JSONArray JSONArray=新的JSONArray(值);
float[]floatArray=newfloat[jsonArray.length()];
for(int i=0;i
但我不是这个解决方案的粉丝,这些转换可能会发生错误。。。如果你有更好的解决方案,我就要;)

public static class ConverterFloatToString {

    @TypeConverter
    public static String JSONArrayfromFloatArray(float[] values) {
        JSONArray jsonArray = new JSONArray();
        for (float value : values) {
            try {
                jsonArray.put(value);
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
        return jsonArray.toString();
    }

    @TypeConverter
    public static float[] JSONArrayToFloatArray(String values) {
        try {
            JSONArray jsonArray = new JSONArray(values);
            float[] floatArray = new float[jsonArray.length()];
            for (int i = 0; i < jsonArray.length(); i++) {
                floatArray[i] = Float.parseFloat(jsonArray.getString(i));
            }
            return floatArray;
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return null;
    }
}