[英]How do I make my realm object a java object?
我在領域中有一個數據庫,需要將領域對象作為我創建的java對象傳遞,以便我的適配器能夠識別它。
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是:
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
上的某個位置(反之亦然),則有兩種選擇。
到目前為止,最好的辦法是避免發送整個對象。 如果您只是將其發送到自己的應用程序中的Activity
或IntentService
,則只需發送主鍵(可能是movieId
)即可。 收件人可以打開一個Realm實例並選擇相同的對象。 這將比拼寫還要快。
如果絕對必須打包,您將需要一個適配器,如下所示:
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());
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.