النصيبة: كيفية تنفيذ IDataProvider / LoadableDetachableModel لقوائم المفهرسة

StackOverflow https://stackoverflow.com/questions/368033

  •  21-08-2019
  •  | 
  •  

سؤال

ما هي أفضل طريقة لتنفيذ IDataProvider وLoadableDetachable في النصيبة لقائمة مفهرسة؟ لنفترض أن لدي العملاء الذي لديه قائمة من عناوين.

class Customer {
    List<Adress> adresses;
}

والآن أريد أن تنفيذ البيانات مزود / LDM عن عناوين العملاء. أعتقد أن الطريقة المعتادة هي IDataProvider كفئة الداخلية التي تشير إلى نموذج العملاء من المكون، مثل:

class AdressDataProvider implements IDataProvider {

public Iterator iterator() {
    Customer c = (Customer)Component.this.getModel(); // somehow get the customer model
    return c.getAdresses().iterator();
}

public IModel model(Object o) {
    Adress a = (Adress) o;
    // Return an LDM which loads the adress by id.
    return new AdressLoadableDetachableModel(a.getId());
}

}

والسؤال: كيف لي أن تنفيذ ذلك، عندما لا يكون عنوان معرف (على سبيل المثال انها السبات مضمن / CollectionOfElements) ولكن لا يمكن تحديدها من قبل مؤشره في قائمة customer.adresses؟ كيف أحافظ على الإشارة إلى الكيان امتلاك والمؤشر؟

في الواقع، أنا أعرف الحل، ولكني أتساءل عما إذا كان هناك نمط مشترك للقيام بذلك.

هل كانت مفيدة؟

المحلول

ما هو الحل المقترح؟ لا يبدو سؤالك واضحا تماما بالنسبة لي. هي عناوين تحميل بتكاسل من السبات؟ لا استطيع ان ارى حقا ما هي مشكلتك مع رمز أعلاه. إذا الحصول على تحميل العناوين الخاصة بك من قبل في السبات على c.getAdresses () مكرر ()؛ استدعاء، ثم لديك عناوين وما هي المشكلة؟ هو customer.adresses في الواقع قائمة الكائنات عنوان أو معرف فقط؟ يمكنك تسجيل دائما الكيان امتلاك ومؤشر انها داخل بك AdressLoadableDetachableModel أي AdressLoadableDetachableModel (a.getId ()، (العملاء) Component.this.getModel ()) يمكنك مساعدة في توضيح؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top