/**
*
*/
package com.umeng.comm.ui.presenter.impl;
import com.umeng.comm.core.beans.CommConfig;
import com.umeng.comm.core.beans.CommUser;
import com.umeng.comm.core.db.ctrl.FansDBAPI;
import com.umeng.comm.core.db.ctrl.impl.DatabaseAPI;
import com.umeng.comm.core.listeners.Listeners.FetchListener;
import com.umeng.comm.core.listeners.Listeners.SimpleFetchListener;
import com.umeng.comm.core.nets.responses.FansResponse;
import com.umeng.comm.core.nets.uitls.NetworkUtils;
import com.umeng.comm.core.utils.CommonUtils;
import com.umeng.comm.ui.mvpview.MvpFollowedUserView;
import com.umeng.comm.ui.utils.BroadcastUtils.BROADCAST_TYPE;
import java.util.List;
/**
*
*/
public class FansFgPresenter extends FollowedUserFgPresenter {
private FansDBAPI mFansDBAPI;
/**
* @param followedUserView
*/
public FansFgPresenter(MvpFollowedUserView followedUserView, String uid) {
super(followedUserView, uid);
// isFollowPage = false;
mFansDBAPI = DatabaseAPI.getInstance().getFansDBAPI();
}
@Override
public void loadDataFromServer() {
mCommunitySDK.fetchFans(mUid, new FetchListener<FansResponse>() {
@Override
public void onStart() {
mFollowedUserView.onRefreshStart();
}
@Override
public void onComplete(FansResponse response) {
// 根据response进行Toast
if (NetworkUtils.handleResponseAll(response)) {
mFollowedUserView.onRefreshEnd();
return;
}
final List<CommUser> fans = response.result;
// 保存到数据库
mFansDBAPI.saveFansToDB(mUid, fans);
// 加载完成后,首先更新粉丝的条数,因为可能在下拉刷新的时候有新的粉丝。
mFollowedUserView.executeCallback(fans.size());
// 去重操作
List<CommUser> dataSource = mFollowedUserView.getBindDataSource();
fans.removeAll(dataSource);
dataSource.addAll(fans);
mFollowedUserView.notifyDataSetChanged();
// 解析下一页地址
parseNextpageUrl(response, true);
mFollowedUserView.onRefreshEnd();
}
});
}
@Override
public void loadDataFromDB() {
if (!mUid.equals(CommConfig.getConfig().loginedUser.id)) {
return;
}
// 加载某个用户的粉丝
mFansDBAPI.loadFansFromDB(mUid, new
SimpleFetchListener<List<CommUser>>() {
@Override
public void onComplete(List<CommUser> results) {
if (!CommonUtils.isActivityAlive(convertContextToActivity())) {
return;
}
updateFans(results);
mFollowedUserView.executeCallback(results.size());
}
});
}
/**
* 更新粉丝的ListView病保存数据到数据库</br>
*
* @param users
*/
private void updateFans(final List<CommUser> users) {
if (users == null || users.size() <= 0) {
return;
}
List<CommUser> dataSource = mFollowedUserView.getBindDataSource();
users.removeAll(dataSource);
dataSource.addAll(users);
mFollowedUserView.notifyDataSetChanged();
}
@Override
protected void onUserFollowStateChange(CommUser user, BROADCAST_TYPE type) {
}
}