Ich frage mich, ob es möglich ist, Master- und Detaildatensätze mit der Methode android.content.ContentResolver.applyBatch() im selben Vorgang an einen Inhaltsanbieter zu speichern, wenn nachfolgende ContentProviderOperation-Elemente im providers-Parameter vom Ergebnis vorheriger Elemente abhängen . Master-Detail Verwenden von ContentResolver.applyBatch()?
Das Problem, das ich habe, ist, dass die tatsächliche Uri nicht an der Zeit ist bekannt, dass die ContentProviderOperation.newInsert (Uri) Methode aufgerufen wird und die Uri ist unveränderlich.
Was ich gekommen sind mit unten dargestellt:
Meister Uri: Inhalt: //com.foobar.masterdetail/master
Details Uri: Inhalt: //com.foobar. Masterdetail/Master/#/Detail
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;
}
in meinem Content-Provider, ich bin das Überschreiben der applyBatch() -Methode, um die operati zu wickeln in einer Transaktion.
Ist dies möglich oder gibt es einen besseren Weg dies zu tun?
Danke.
Bitte denken Sie, Sie könnten Ihren Code für das Einfügen von Master-Detail-Datensätze teilen. Ich habe verzweifelt versucht, fast eine Woche lang Informationen darüber zu finden. – eddy