Qual è il modo corretto per un relatore di comunicare con un altro relatore o con il pattern MVP su Android?

1

Ho un'attività con due frammenti collegati, Fragment / View A controllata da Presenter A e Fragment / View B controllati da Presenter B. View A si trova nella metà superiore dello schermo e non cambia durante la vita dell'attività . Visualizza B occupa la metà inferiore dello schermo e viene invertito quando si naviga in un altro frammento / vista.

Il problema è che Presenter B deve comunicare fino a View A o Presenter A per manipolarlo aggiungendo oggetti ad esso o cambiando il modo in cui i dati sono rappresentati. Come può essere fatto senza che il presentatore B sappia o si preoccupa del fatto che la View A esiste per mantenere separate queste funzionalità? Inoltre, non tutti i Presenter B devono modificare View A.

            View A
         /
Activity  ----------------
         \
            View B

Alcune idee che ho avuto e i problemi che hanno

1) Presenter B - > Visualizza B - > Attività - > Visualizza A - > Presentatore A - > Visualizza A

Problema: duplica i metodi comuni su ogni Visualizza B, metodo duplicato quando chiami per attività per poi chiamare Visualizza A, passando tra la Vista A e la Presenter A per aggiornare il modello

2) Presenter B - > Modello A - > Presentatore A - > Visualizza A

Problema: alcuni dati devono passare attraverso il Modello A e informare il presentatore, ma ci sono alcune cose che non sono correlate ai dati e devono semplicemente manipolare direttamente la vista

3) Presenter B - > Visualizza A - > Presentatore A - > Visualizza A

Problema: due relatori ora controllano una vista, tra la vista A e la relatrice A per aggiornare il modello

4) Utilizza il bus per inviare eventi dal relatore B al presentatore A

Problema: il bus è troppo facile da abusare e le interfacce sono più facili da seguire nel flusso

5) Qualche altra idea?

Ecco un esempio del nostro codice corrente e la prima idea descritta

link

    
posta UndefinedPotato 22.06.2018 - 19:49
fonte

1 risposta

0

Usando gli eventi. Il presentatore B solleva eventi quando accadono certe cose. Chiunque sia interessato può ascoltare. In questo momento potrebbe essere A, ma in futuro X, Y, & Z può anche ascoltare. A B non importa, continua ad aumentare gli stessi eventi.

Alcune lingue supportano gli eventi come cittadini di prima classe, ma in Java questo è spesso implementato come modello di osservatore . Infatti, l'API Android ha anche Interfacce Observer and Observable .

    
risposta data 24.06.2018 - 17:30
fonte

Leggi altre domande sui tag