我道歉,如果我不是我的解释超清晰,但我会增加,如果要求修改为清楚起见这个问题。
我正在开发一个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;
}
这是模型和方法的简单示意图,但我相信我已经把所有相关信息。 顺便说一句, media
是包含一个JSON对象Images
。
现在,我想也是本地存储的数据。 为了让用户使用和图像之间的关系ORMLite看来你必须使用ForeignCollection类和@ForeignCollectionField注解。 我不相信GSON可以直接解析JSON为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
以相同的图。 目前的情况是,为对所述URL Image
被存储在不同类型的根据数据是否是本地或远程对象。 我想这样做的是,如果Image
存储在ForeginCollection
对象,转换该对象到一个ArrayList
,然后用我的代码的其余部分,提取的进行Image
的URL,并显示它。
我想有两个问题。
这是一个很好的计划,或者我应该写两个完全独立的提取方式
Image
从数据的URL,而不是转换对象ForeignCollection
到ArrayList
?如果它是一个很好的计划,我怎么一个转换
ForeginCollection
一个ArrayList
?