package com.yuyh.sprintnba.ui.presenter.impl; import android.content.Context; import android.text.TextUtils; import android.view.View; import com.yuyh.library.AppUtils; import com.yuyh.library.utils.data.ACache; import com.yuyh.library.utils.log.LogUtils; import com.yuyh.library.utils.toast.ToastUtils; import com.yuyh.sprintnba.http.api.RequestCallback; import com.yuyh.sprintnba.http.api.hupu.forum.HupuForumService; import com.yuyh.sprintnba.http.api.hupu.game.HupuGamesService; import com.yuyh.sprintnba.http.bean.forum.AttendStatusData; import com.yuyh.sprintnba.http.bean.forum.ForumsData; import com.yuyh.sprintnba.http.bean.forum.SearchListData; import com.yuyh.sprintnba.http.bean.forum.ThreadListData; import com.yuyh.sprintnba.ui.presenter.Presenter; import com.yuyh.sprintnba.ui.view.ThreadListView; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * @author yuyh. * @date 16/6/26. */ public class ThreadListPresenterImpl implements Presenter { private Context context; private ThreadListView mThreadListView; private String fid; private String lastTid = ""; private String lastTamp = ""; private String type; private int pageIndex; private String key; public int loadType = TYPE_LIST; public static final int TYPE_LIST = 1; public static final int TYPE_SEARCH = 2; List<ThreadListData.ThreadInfo> list = new ArrayList<>(); public ThreadListPresenterImpl(String fid, Context context, ThreadListView threadListView) { this.fid = fid; this.context = context; this.mThreadListView = threadListView; } public void onThreadReceive(String type, String last, boolean isRefresh) { mThreadListView.showLoading(""); mThreadListView.onFloatingVisibility(View.VISIBLE); this.type = type; loadType = TYPE_LIST; loadThreadList(last, isRefresh); // TODO 获取版块关注状态 getAttendStatus(); } public void onStartSearch(String key, int page, boolean isRefresh) { if (TextUtils.isEmpty(key)) { ToastUtils.showSingleToast("搜索词不能为空"); return; } mThreadListView.showLoading(""); mThreadListView.onFloatingVisibility(View.GONE); pageIndex = page; this.key = key; loadType = TYPE_SEARCH; loadSearchList(isRefresh); } private void loadThreadList(String last, final boolean isRefresh) { LogUtils.i("last=" + last + " isRefresh=" + isRefresh); HupuForumService.getForumPosts(fid, last, 20, lastTamp, type, new RequestCallback<ThreadListData>() { @Override public void onSuccess(ThreadListData threadListData) { if (threadListData != null && threadListData.result != null && threadListData.result.data != null) { mThreadListView.showThreadList(threadListData.result.data, isRefresh); mThreadListView.onLoadCompleted(threadListData.result.nextPage); } else { mThreadListView.showError("没有更多啦"); mThreadListView.onLoadCompleted(false); } mThreadListView.hideLoading(); mThreadListView.onRefreshCompleted(); } @Override public void onFailure(String message) { LogUtils.e(message); mThreadListView.showError("数据加载失败"); mThreadListView.hideLoading(); mThreadListView.onRefreshCompleted(); mThreadListView.onLoadCompleted(false); } }); } private void loadSearchList(final boolean isRefresh) { HupuGamesService.search(key, fid, pageIndex, new RequestCallback<SearchListData>() { @Override public void onSuccess(SearchListData searchData) { if (searchData != null) { if (searchData.error != null) { ToastUtils.showSingleToast(searchData.error.msg); } else if (searchData.result != null) { List<ThreadListData.ThreadInfo> list = new ArrayList<>(); SearchListData.SearchResult result = searchData.result; for (SearchListData.Search search : result.data) { ThreadListData.ThreadInfo thread = new ThreadListData.ThreadInfo(); thread.fid = search.fid; thread.tid = search.id; thread.lightReply = Integer.valueOf(search.lights); thread.replies = search.replies; thread.userName = search.username; thread.title = search.title; long time = Long.valueOf(search.addtime); Date date = new Date(time * 1000); SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); thread.time = format.format(date); list.add(thread); } mThreadListView.showThreadList(list, isRefresh); mThreadListView.onLoadCompleted(result.hasNextPage == 1 ? true : false); } else { ToastUtils.showSingleToast("找不到相应内容哦"); } } else { ToastUtils.showSingleToast("找不到相应内容哦"); } mThreadListView.hideLoading(); } @Override public void onFailure(String message) { ToastUtils.showSingleToast("查询失败"); mThreadListView.hideLoading(); } }); } @Override public void initialized() { } public void getAttendStatus() { HupuForumService.getAttentionStatus(fid, new RequestCallback<AttendStatusData>() { @Override public void onSuccess(AttendStatusData attendStatusData) { } @Override public void onFailure(String message) { } }); } public void onAttentionClick() { // TODO attention ToastUtils.showSingleToast("暂不支持哦~"); } public void onRefresh() { mThreadListView.onScrollToTop(); if (loadType == TYPE_LIST) { loadThreadList("", true); } else { pageIndex = 1; loadSearchList(true); } } public void getForumInfo() { final String key = "getAllForums"; final ACache cache = ACache.get(AppUtils.getAppContext()); ForumsData data = (ForumsData) cache.getAsObject(key); boolean complete = false; if (data != null) { ArrayList<ForumsData.ForumsResult> list = data.data; // 所有大版块-> NBA/CBA/... for (ForumsData.ForumsResult result : list) { if (complete) break; ArrayList<ForumsData.Forums> forumsList = result.sub; // 小版块类别 主版/球队分区/其他/... for (ForumsData.Forums forums : forumsList) { if (complete) break; ArrayList<ForumsData.Forum> forumList = forums.data; // 版块列表 骑士/火箭/... for (ForumsData.Forum forum : forumList) { if (forum.fid.equals(fid)) { mThreadListView.showThreadInfo(forum); complete = true; break; } } } } } } }