2010-07-11 16 views
21

merak ediyorum eğer onun sağlayıcıları parametresinde müteakip ContentProviderOperation ürün önceki öğelerin sonucu bağlıdır aynı operasyonda android.content.ContentResolver.applyBatch() yöntemini kullanarak bir içerik sağlayıcıya ana ve detay kayıtlarını kaydetmek mümkün . Master-detail ContentResolver.applyBatch() öğesini kullanarak?

I having gerçek Uri ContentProviderOperation.newInsert (URI) yöntemi denir anda bilinmemektedir olmasıdır Uri sabittir. Ben aşağıda gösterilmiştir ile geldi ne

:

Usta Uri:: content: //com.foobar
Detay Uri //com.foobar.masterdetail/master. masterdetail/ana/#/detay

benim içerik sağlayıcı olarak
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; 
} 

Operati sarmak amacıyla, ben applyBatch() yöntemini geçersiz am bir işlemde.

Bu mümkün mü yoksa bunu yapmanın daha iyi bir yolu var mı?

Teşekkürler.

+0

Lütfen, ana-detay kayıtlarını eklemek için kodunuzu paylaşabileceğinizi düşünüyor musunuz? Yaklaşık bir hafta boyunca bu konuda biraz bilgi bulmaya çalışıyorum. – eddy

cevap

17

İşlem dizisindeki bir öğeden üretilen her sonuç, dizideki diziniyle tanımlanır. Sonraki işlemler, bu sonuçlara withValueBackReference() yöntemi aracılığıyla başvurabilir.

.withValue(Detail.MASTER_ID, /* WHAT GOES HERE? */) 

bu kullanım Tam bir örnek sample ContactManager bulunabilir

.withValueBackReference(Detail.MASTER_ID, 0) 

olur. 0, değerin elde edildiği ContentProviderOperation dizinidir.

+0

Örnek projeleri nasıl indirebilirim? İndirme bağlantılarını göremiyorum – eddy

+0

http://stackoverflow.com/questions/4655291/semantics-of-withvaluebackreference – phreed

İlgili konular