Room Android-浮点、整数、双精度等数组-可以考虑为其添加类型转换器。
我只是从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
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;
}
}