I got tablayout with 2 fragments. When 1st fragment go on resume we see the next flow
ActivityCallMethod -> PresenterCallMethod -> RepositoryCallMethod -> repositorySendCallBackToPresenter -> EventInPresenterTriggerAndCallMethodFromView -> ViewCallItsMethod ---And here strange ---> EventInPresenterTriggerAndCallMethodFromView (withTheSameData) -> ViewCallItsMethod (andDuplicateData)
When the fragment starts working first time its not calling method from presenter twice.
So why there is no double callback from repository but for some reason, presenter triggers twice?
ActivityCode
@Override
public void addRealUsers(List<OnlineUser> onlineUsers) {
mAdapter.addUsers(onlineUsers);
}
PresenterCode
ublic class OnlineUsersPresenter {
private OnlineUsersInteractor mInteractor;
private OnlineUsersView mView;
public OnlineUsersPresenter(OnlineUsersInteractor mInteractor, OnlineUsersView view) {
this.mInteractor = mInteractor;
this.mView = view;
}
/**
* Get the real list of the users
*/
@Subscribe
public void inflateReaUserList(RealUsersListEvent event) {
mView.addRealUsers(event.getRealUserList());
}
RepositoryCode
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.hasChildren()) {
List<OnlineUser> newUser = new ArrayList<>();
for (DataSnapshot userSnapShot : dataSnapshot.getChildren()) {
newUser.add(userSnapShot.getValue(OnlineUser.class));
}
last_node = newUser.get(newUser.size() - 1).getUid();
last_rating = newUser.get(newUser.size() - 1).getRating();
if (!last_node.equals(last_key)) {
newUser.remove(newUser.size() - 1);
} else {
last_node = "end";
isMaxData = true;
}
isLoading = false;
EventBus.getDefault().post(new RealUsersListEvent(newUser));
} else {
isLoading = false;
isMaxData = true;
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
EventCode
List<OnlineUser> userList;
public RealUsersListEvent(List<OnlineUser> realUsersList) {
this.userList = realUsersList;
}
public List<OnlineUser> getRealUserList() {
return userList;
}
public void setRealUserList(List<OnlineUser> cardList) {
this.userList = cardList;
}
And as I checked the usage of this event is only in one place. In userRepository