如果我對我的解釋不太清楚,我表示歉意,但如果要求,我會添加並編輯此問題以求清晰。將ForeignCollection轉換爲ArrayList - ORMLite,Gson和Android
我正在開發一個Android應用程序,它通過外部API接收數據並使用ORMLite在本地存儲數據。之前本地存儲的數據和使用ORMLite我有其檢索JSON從服務器模型和通過解析它:
Gson gson = new Gson();
String result = ApiClient.httpPost("/user_route");
User user = gson.fromJson(result, User.class);
用戶類被定義
public class User {
int id;
String name;
ArrayList<Image> media;
}
和圖像類:
public class Image {
int id;
int creator_id;
String url;
}
這是模型和方法的簡化表示,但我相信我保留了所有相關信息。 BTW,media
是一個包含Images
的JSON對象。
現在我試圖在本地存儲數據。爲了使用ORMLite建立用戶和圖像之間的關係,似乎你必須使用ForeignCollection類和@ForeignCollectionField註解。我不相信Gson可以直接解析Json的User類中的media
字段作爲ForeignCollection對象,所以我認爲我需要創建兩個字段mediaCollection
和media
。
現在使用ORMLite User類看起來是這樣的:
@DatabaseTable(tableName = "Users")
public class User {
@DatabaseField(generatedId = true)
int id;
@DatabaseField
String name;
@ForeignCollectionField
ForeignCollection<Image> mediaCollection;
ArrayList<Image> media;
}
與ORMLite Image類看起來是這樣的:
@DatabaseTable(tableName = "Images")
public class Image {
@DatabaseField(generatedId = true)
int id;
@DatabaseField(foreign=true, foreignAutoCreate=true, foreignAutoRefresh=true)
private User user;
@DatabaseField
int creator_id;
@DatabaseField
String url;
}
應用的流量如何工作是第一次我打的地方數據庫爲用戶。我執行一些邏輯,然後確定是否需要實際點擊服務器以「更新」或「刷新」用戶數據。
無論數據來自本地還是來自遠程服務器,我都需要在同一視圖中顯示Image
。現在,根據數據是本地還是遠程,Image
的URL存儲在不同類型的對象中。我想要做的是,如果Image
存儲在ForeginCollection
對象中,請將該對象轉換爲ArrayList
,然後繼續執行我的代碼的其餘部分,該代碼將提取Image
URL並將其顯示。
我想有兩個問題。
這是一個很好的計劃,或者我應該寫兩個完全獨立的從數據中提取
Image
URL,從ForeignCollection
對象並未轉換爲ArrayList
的方法呢?如果是一個很好的計劃,我怎麼轉換
ForeginCollection
到ArrayList
?
在另一個相關的線程中查看答案:http://stackoverflow.com/a/31598771/3495371 –