package com.martin.ionichinabystudio.ui.fragment;
import android.content.Context;
import android.os.Bundle;
import com.martin.ionichinabystudio.R;
import com.martin.ionichinabystudio.config.Constant;
import com.martin.ionichinabystudio.model.entity.Topic;
import com.martin.ionichinabystudio.model.entity.TopicListResult;
import com.martin.ionichinabystudio.presenter.impl.TopicPresenterImpl;
import com.martin.ionichinabystudio.presenter.inter.TopicPresenter;
import com.martin.ionichinabystudio.ui.activity.MainActivity;
import com.martin.ionichinabystudio.ui.adapter.TopicListAdapter;
import com.martin.ionichinabystudio.ui.view.BaseView;
import com.martin.simpledevelop.fragment.SaFragment;
import com.martin.simpledevelop.utils.log.SaLogUtils;
import com.martin.simpledevelop.utils.log.SaToastUtils;
import com.martin.simpledevelop.widget.SaRefreshLayout;
import com.rey.material.widget.ListView;
import com.rey.material.widget.ProgressView;
import org.androidannotations.annotations.AfterViews;
import org.androidannotations.annotations.Background;
import org.androidannotations.annotations.EFragment;
import org.androidannotations.annotations.ViewById;
import java.util.ArrayList;
import java.util.List;
/**
* @Description
* @File ${FILE_NAME}
* @Package com.martin.ionichinabystudio.ui.fragment
* @Date 2015/7/812:50
* @Author Donghongyu 1358506549@qq.com
* @Version v1.0.0
*/
@EFragment(R.layout.fragment_topics)
public class TopicsFragment extends SaFragment implements
BaseView, SaRefreshLayout.OnRefreshListener, SaRefreshLayout.OnLoadListener {
Context mContext;
MainActivity mActivity;
//查询话题的类型
private String mTopicType;
//谷歌的下拉刷新控件
@ViewById(R.id.swipe_refresh_layout)
SaRefreshLayout mRefreshLayout;
//显示话题的列表控件
@ViewById(R.id.topic_list)
ListView listView;
@ViewById(R.id.progress_pv_circular)
ProgressView mProgressView;
//话题的数据适配器
TopicListAdapter topicListAdapter;
//数据源
List<Topic> topicList = new ArrayList<Topic>();
//话题的Presenter
TopicPresenter topicPresenter;
//当前的数据页
int currentPage = 1;
//获取数据的类型,刷新出来的数据,加载出来的数据
boolean isRefresh = true;
@AfterViews
public void init() {
SaLogUtils.e(TAG, "查询话题。。。。");
//接收到初始化的时候传入的类型
Bundle bundle = getArguments();
mTopicType = bundle != null ? bundle.getString(Constant.QUERY_TOPIC_TYPE) : "";
mActivity = (MainActivity) getActivity();
mContext = mActivity;
initData();
//设置刷新监听
mRefreshLayout.setOnRefreshListener(this);
//设置加载监听
mRefreshLayout.setOnLoadListener(this);
//设置刷新控件的样式
mRefreshLayout.setColorSchemeResources(android.R.color.holo_blue_bright, android.R.color.holo_green_light,
android.R.color.holo_orange_light, android.R.color.holo_red_light);
//设置刷新控件的背景色
mRefreshLayout.setProgressBackgroundColorSchemeColor(R.color.gray);
//创建话题的数据适配器
topicListAdapter = new TopicListAdapter(mActivity, mContext, topicList, R.layout.item_topics);
//给列表控件设置数据适配器
listView.setAdapter(topicListAdapter);
}
//刚初始化是图片段的数据查询操作
@Background
public void initData() {
topicPresenter = new TopicPresenterImpl(this, mContext);
topicPresenter.getTopics(mTopicType, 1);
}
@Override
public void setResult(Object topic) {
TopicListResult topicListResult = (TopicListResult) topic;
if (topicListResult == null)
return;
if (isRefresh) {
topicListAdapter.addRefreshDatas(topicListResult.getData());
} else {
topicListAdapter.addAll(topicListResult.getData());
}
topicListAdapter.notifyDataSetChanged();
}
@Override
public void showLoading() {
//开始进度条
mProgressView.start();
// mRefreshLayout.setRefreshing(true);
// SaToastUtils.showToast(mContext, "显示加载的控件。。。");
}
@Override
public void hideLoading() {
//开始进度条
mProgressView.stop();
mRefreshLayout.setRefreshing(false);
mRefreshLayout.setLoading(false);
// SaToastUtils.showToast(mContext, "隐藏加载的控件。。。");
}
@Override
public void showError() {
mRefreshLayout.setRefreshing(false);
mRefreshLayout.setLoading(false);
SaToastUtils.showToast(mContext, "网络异常");
}
//刷新的监听
@Override
public void onRefresh() {
isRefresh = true;
// mRefreshLayout.setLoading(false);
currentPage = 1;
topicPresenter.getTopics(mTopicType, currentPage);
}
//加载的监听
@Override
public void onLoad() {
isRefresh = false;
// mRefreshLayout.setRefreshing(false);
currentPage++;
topicPresenter.getTopics(mTopicType, currentPage);
}
}