Skip to content Skip to sidebar Skip to footer

How Do I Make My Realm Object A Java Object?

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

Solution 1:

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.

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());
    }
}

Post a Comment for "How Do I Make My Realm Object A Java Object?"