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?"