簡體   English   中英

如何使我的領域對象成為Java對象?

[英]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上的某個位置(反之亦然),則有兩種選擇。

到目前為止,最好的辦法是避免發送整個對象。 如果您只是將其發送到自己的應用程序中的ActivityIntentService ,則只需發送主鍵(可能是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM