我正在使用與EventBus(Otto)相結合的Model-View-Presenter設計模式。我實現此模式的全部原因是僅將事件與演示者分開,並讓演示者更新視圖。模型查看使用EventBus的演示者,如何將事件返回給演示者?
這是一些我有的代碼的例子,我將以Events
爲例。 (請注意,Events
與EventBus
Event
不同,這意味着Events
中的Event
是類似於「爸爸的生日」的事件,但EventBus
中的Event
是總線事件)。
片段
public class EventFragment extends Fragment {
private EventPresenter mEventPresenter;
// Initialize boilerplate code...
private void init() {
mEventPresenter = new EventPresenter();
mEventPresenter.loadEvents();
}
// I WANT TO MOVE THESE SUBSCRIPTION METHODS TO
// MY PRESENTER OR SUBSCRIBER, BUT THEY ARE
// COUPLED TO THE ADAPTER OR A VIEW
@Subscribe
public void onEventsLoaded(EventsLoaded eventsLoaded) {
List<Event> events = eventsLoaded.getEvents();
mAdapter.setEvents(events);
}
@Subscribe
public void onEventJoined(EventJoined eventJoined) {
mItemView.doAnimation();
mTextView.setText("Leave");
mAdapter.joinEvent(eventJoined.getEvent());
}
@Subscribe
public void onLeaveEvent(LeftEvent leftEvent) {
mItemView.doAnimation();
mTextView.setText("Join");
mAdapter.leftEvent(leftEvent.getEvent());
}
}
演示
public class EventPresenter {
// This is the only method I have right now kind of defeats the purpose of
// having a presenter
public void loadEvents() {
EventBus.getInstance().post(new LoadEvents());
}
}
用戶
我怎樣才能得到預Senters和訂閱者來處理所有的業務邏輯,並讓Fragment只處理視圖?
可能訂閱事件演講,與視圖中,它可以幫助一個實例。如主持人從事件總線獲取事件並調用適當的視圖方法來更新UI。 –
你能發表一個示例答案嗎? – AndyRoid
檢查我的答案。 –