RealmObject AND Parcelable
Soy nuevo en Realm para Android, así que no estoy seguro de que me esté acercando de esta manera. Tengo una clase que se parece a esto:
public class Entry extends RealmObject implements Parcelable { ... }
El problema es que la interfaz Parcelable
contiene métodos como describeContents()
writeToParcel()
y RealmObjects no se supone que tienen otros métodos que getters y setters:
- ¿Qué hace exactamente la restricción de clave externa "NO ACTION" de SQLite y cómo es diferente de "RESTRICT"?
- La aplicación se bloquea si el cursor SQLite no tiene resultados
- ¿Ordenar fechas en la base de datos sqlite?
- SQLite: Búsqueda eficiente de subcadenas en una tabla grande
- SQLiteException: tabla ya existe
Error:(81, 17) error: Only getters and setters should be defined in model classes
Así que mi pregunta es: ¿Cómo puedo hacer que estos dos trabajen juntos? ¿Hay una mejor manera que creando una clase separada (quizá algo como RealmEntry
)? Hacerlo resultaría en un montón de código duplicado …
- Android.database.sqlite.SQLITeException: no hay tal tabla: admin mientras compila: INSERT INTO ... etc
- Selección de valores NULL en Android SQLite
- ¿Dónde deben llamar las aplicaciones de Android a SQLite getWritableDatabase?
- Consulta SQLite SQLiteLog (1) no such Column:
- ¿Qué técnica de almacenamiento de datos Android utilizar?
- Integración ormlite-4.9 con sqlcipher-2.08
- Cómo eliminar una fila en la primera posición de la sqlite en android
- Tipos de datos utilizados en SQLite
Ahora hay una solución diferente para eso: sólo implementar la interfaz RealmModel
en lugar de extenderse desde RealmObject
:
@RealmClass public class User implements RealmModel { }
Puede encontrar más información en la documentación del reino .
UPDATE mayo de 2016: Esta respuesta es ahora anticuado a menos que ya utiliza Parceler. @Henrique de Sousa solución es mucho mejor.
En realidad, hay una solución. Puede obtener el resultado que desea si está dispuesto a utilizar una biblioteca de terceros (Parceler) para la generación Parcelable
. Vea mi respuesta a esta otra pregunta , citada a continuación para mayor comodidad.
Con Parceler v0.2.16 , puede hacer esto:
@RealmClass // required if using JDK 1.6 (unrelated to Parceler issue) @Parcel(value = Parcel.Serialization.BEAN, analyze = { Feed.class }) public class Feed extends RealmObject { // ... }
A continuación, utilice
Parcels.wrap(Feed.class, feed)
lugar deParcels.wrap(feed)
todas partes, de lo contrario su aplicación se bloqueará conorg.parceler.ParcelerRuntimeException: Unable to create ParcelableFactory for io.realm.FeedRealmProxy
.
En este momento, no es posible implementar Parcelable en RealmObjects. Una solución es utilizar dos archivos de realm: el predeterminado como su almacén de objetos y uno especializado para guardar temporalmente para rotaciones, etc.
- Error de permiso denegado mientras llama a webservice usando HTTP en la aplicación android
- ¿Por qué no funcionan las bibliotecas de soporte de Android en mi proyecto?