如何使我的领域对象成为Java对象? [英] How do I make my realm object a java object?
问题描述
我在领域中有一个数据库,需要将领域对象作为我创建的java对象传递,以便适配器识别它.
I have a database in realm and need to pass a realm object as a java object I have created in order for my adapter to recognise it.
public final static Parcelable.Creator<MoviePOJO> CREATOR = new Creator<MoviePOJO>() {
@SuppressWarnings({
"unchecked"
})
public MoviePOJO createFromParcel(Parcel in) {
MoviePOJO instance = new MoviePOJO();
instance.posterPath = ((String) in.readValue((String.class.getClassLoader())));
instance.overview = ((String) in.readValue((String.class.getClassLoader())));
instance.releaseDate = ((String) in.readValue((String.class.getClassLoader())));
instance.id = ((Integer) in.readValue((Integer.class.getClassLoader())));
instance.originalTitle = ((String) in.readValue((String.class.getClassLoader())));
instance.backdropPath = ((String) in.readValue((String.class.getClassLoader())));
instance.voteAverage = ((Double) in.readValue((Double.class.getClassLoader())));
return instance;
}
public MoviePOJO[] newArray(int size) {
return (new MoviePOJO[size]);
}
};
是电影创作者,我的RealmObject是:
is the movie creator and my RealmObject is:
public class FavoritesItem extends RealmObject implements Parcelable {
@PrimaryKey private Integer movieId;
private String moviePoster;
private String movieBackdrop;
private String movieTitle;
private String movieOverview;
private Double movieRating;
private String movieReleaseDate;
}
我该如何彼此联系?
推荐答案
假设如@ cricket_007所建议的那样,您想要从Realm数据库中获取一个对象,然后将其发送到Intent
上的某个位置(反之亦然) ),您有两种选择.
Presuming that, as @cricket_007 suggests, you want to get an object from a Realm DB and then send it somewhere on an Intent
(or vice-versa), you have a couple options.
到目前为止,最好的办法是避免发送整个对象.如果您只是将其发送到自己的应用程序中的Activity
或IntentService
,则只需发送主键(可能是movieId
)即可.收件人可以打开一个Realm实例并选择相同的对象.这将比拼写还要快 .
By far the best would be to avoid sending the whole object. If you are just sending it, say, to an Activity
or an IntentService
, within your own app, just send the primary key (probably movieId
). The recipient can open a Realm instance and select the same object. This will be far faster than even parcelling.
如果绝对必须打包,您将需要一个适配器,如下所示:
If you absolutely must parcel, you are going to want an adapter, like this:
public class MovieParcelable implements Parcelable {
public static final Creator<MovieParcelable> CREATOR = new Creator<MovieParcelable>() {
@Override
public MovieParcelable createFromParcel(Parcel in) {
int id = in.readInt();
String poster = in.readString();
// ...
double rating = in.readDouble();
String releaseDate = in.readString();
return new MovieParcelable(id, poster, ..., rating, releaseDate);
}
@Override
public MovieParcelable[] newArray(int size) {
return new MovieParcelable[size];
}
};
private final Movie movie;
public MovieParcelable(Movie movie) {
this.movie = movie;
}
MovieParcelable(int id, String poster, ..., double rating, String releaseDate) {
this(new Movie(id, poster, ..., rating, releaseDate));
}
public Movie getMovie() { return movie; }
@Override
public int describeContents() { return 0; }
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(movie.getId());
dest.writeString(movie.getPoster());
// ...
dest.writeDouble(movie.getRating());
dest.writeString(movie.getReleaseDate());
}
}
这篇关于如何使我的领域对象成为Java对象?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!