Me preguntaba si es posible guardar registros maestros y de detalles a un proveedor de contenido utilizando el método android.content.ContentResolver.applyBatch() en la misma operación donde los elementos subsiguientes ContentProviderOperation en el parámetro proveedores dependen del resultado de elementos anteriores . Master-detail Using ContentResolver.applyBatch()?
El problema que estoy teniendo es que el Uri actual no se conoce en el momento en que el método ContentProviderOperation.newInsert (Uri) es llamado y el URI es inmutable.
Lo que he llegado con que se muestra a continuación:
Maestro Uri: contenido: //com.foobar.masterdetail/master
Detalle Uri: contenido: //com.foobar. MasterDetail/maestro/#/detalle
ArrayList<ContentProviderOperation> operations = new ArrayList<ContentProviderOperation>();
operations.add(ContentProviderOperation.newInsert(intent.getData())
.withValue(Master.NAME, "")
.withValue(Master.VALUE, "")
.build());
operations.add(ContentProviderOperation.newInsert(intent.getData()
.buildUpon()
.appendPath("#") /* ACTUAL VALUE NOT KNOWN UNTIL MASTER ROW IS SAVED */
.appendPath("detail")
.build())
.withValue(Detail.MASTER_ID, /* WHAT GOES HERE? */)
.withValue(Detail.NAME, "")
.withValue(Detail.VALUE, "")
.build());
ContentProviderResult[] results = this.getContentResolver().applyBatch(MasterDetail.AUTHORITY, operations);
for (ContentProviderResult result : results) {
Uri test = result.uri;
}
en mi proveedor de contenido, estoy reemplazando el método applyBatch() con el fin de envolver los operati en una transacción.
¿Es posible o hay una mejor manera de hacerlo?
Gracias.
por favor, ¿cree que podría compartir su código para insertar registros de detalles maestros? He estado tratando desesperadamente de encontrar información sobre esto durante casi una semana. – eddy