2017-08-03 55 views
0

使用List 在我的Android項目,我有模型類,如下 如何RealmObject模型類

public class PilotMovement extends RealmObject { 

private String type; 
private RealmList<Coordinates> coordinates; 

public PilotMovement() { 
} 

public PilotMovement(String type, RealmList<Coordinates> coordinates) { 
    this.type = type; 
    this.coordinates = coordinates; 
} 

public void setType(String type) { 
    this.type = type; 
} 

public void setCoordinates(RealmList<Coordinates> coordinates) { 
    this.coordinates = coordinates; 
} 

public class Coordinates extends RealmObject{ 
private double lon, lat; 
public Coordinates(double lon, double lat) { 
    this.lon = lon; 
    this.lat = lat; 
} 
} 

定製GSON型適配器RealmList如下

public class CoordinatesRealmListConverter implements 
    JsonSerializer<RealmList<Coordinates>>, 
    JsonDeserializer<RealmList<Coordinates>> { 
@Override 
public JsonElement serialize(RealmList<Coordinates> src, Type typeOfSrc, JsonSerializationContext context) { 
    JsonArray jsonArray = new JsonArray(); 
    for (Coordinates coordinates: src) { 
     jsonArray.add(context.serialize(coordinates)); 
    } 
    return jsonArray; 
} 
@Override 
public RealmList<Coordinates> deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { 
    RealmList<Coordinates> coordinates = new RealmList<>(); 
    JsonArray jsonArray = new JsonArray(); 
    for (JsonElement element: jsonArray) { 
     coordinates.add(context.deserialize(element,Coordinates.class)); 
    } 
    return null; 
} 
} 

運行後顯示編譯錯誤的項目如下

錯誤:執行失敗的任務':app:transformJackWithJack ForDebug」。

com.android.jack.ir.JNodeInternalError: java.lang.Exception: java.lang.IllegalStateException: Unsupported type java.lang.Object

如何解決這個問題的解決方案是什麼?

回答

1

考慮使用RealmList而不是列表。但是我記得Realm不支持非RealmObjects列表。所以,最好的辦法就是座標分離到類似的東西:

public class LocationInfo extends RealmObject { 
    private String type; 
    private double lat; 
    private double lon; 
} 
+0

這是好的,但我要通過這個數據到服務器,預計一樣名單類型。 –

+0

這不是問題。你只需要配置你的JSON序列化器來從這個POJO格式化一個合適的JSON –

+0

你的意思是像這樣的 新的Gson()。fromJson(jsonStr,LocationInfo.class); 請問我有一個示例代碼片段嗎? –