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