/**
*
*/
package com.umeng.comm.ui.presenter.impl;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import com.umeng.comm.core.beans.FeedItem;
import com.umeng.comm.core.beans.FeedItem.CATEGORY;
import com.umeng.comm.core.nets.responses.FeedsResponse;
import com.umeng.comm.ui.mvpview.MvpFeedView;
/**
*
*/
public class FavoritesFeedPresenter extends FriendFeedPresenter {
/**
* @param feedViewInterface
*/
public FavoritesFeedPresenter(MvpFeedView feedViewInterface) {
super(feedViewInterface);
}
@Override
public void loadDataFromServer() {
mCommunitySDK.fetchFavoritesFeed(mRefreshListener);
}
@Override
protected void beforeDeliveryFeeds(FeedsResponse response) {
isNeedRemoveOldFeeds.set(false);
for (FeedItem item : response.result) {
item.category = CATEGORY.FAVORITES;
}
}
@Override
public void loadDataFromDB() {
mDatabaseAPI.getFeedDBAPI().loadFavoritesFeed(mDbFetchListener);
}
/**
* 更新feed 收藏/ 取消收藏</br>
*
* @param feedId 需要被更新的feedid
* @param category
*/
public void updateFeedFavourites(FeedItem item, CATEGORY category) {
List<FeedItem> items = mFeedView.getBindDataSource();
if (category == CATEGORY.FAVORITES) {
items.add(item);
mFeedView.notifyDataSetChanged();
return;
}
Iterator<FeedItem> iterator = items.iterator();
while (iterator.hasNext()) {
if (iterator.next().id.equals(item.id)) {
iterator.remove();
break;
}
}
mFeedView.notifyDataSetChanged();
}
public void addFavoutite(FeedItem feedItem) {
mFeedView.getBindDataSource().add(feedItem);
sortFeedItems(mFeedView.getBindDataSource());
mFeedView.notifyDataSetChanged();
}
@Override
protected int addFeedItemsToHeader(List<FeedItem> feedItems) {
List<FeedItem> olds = mFeedView.getBindDataSource();
int size = olds.size();
olds.removeAll(feedItems);
olds.addAll(0, feedItems);
int news = olds.size() - size;
sortFeedItems(olds);
mFeedView.notifyDataSetChanged();
return news;
}
@Override
public void sortFeedItems(List<FeedItem> items) {
Collections.sort(items, mComparator);
}
/**
* 收藏feed按照添加时间排序
*/
private Comparator<FeedItem> mComparator = new Comparator<FeedItem>() {
@Override
public int compare(FeedItem lhs, FeedItem rhs) {
return rhs.addTime.compareTo(lhs.addTime);
}
};
}