package com.jun.elephant.ui.topic.list; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.widget.TextView; import com.jun.elephant.R; import com.jun.elephant.entity.topic.TopicEntity; import com.jun.elephant.entity.topic.TopicListEntity; import com.jun.elephant.global.Constants; import com.jun.elephant.mvpframe.base.BaseFrameFragment; import com.jun.elephant.ui.adapter.TopicListAdapter; import com.jun.elephant.ui.widget.MultiStateView; import com.jun.elephant.ui.widget.MySwipeRefreshLayout; import java.util.ArrayList; import java.util.List; import butterknife.Bind; import butterknife.ButterKnife; import in.srain.cube.views.ptr.PtrDefaultHandler2; import in.srain.cube.views.ptr.PtrFrameLayout; /** * Created by Jun on 2016/3/18. */ public class TopicListByUserFragment extends BaseFrameFragment<TopicPresenter, TopicModel> implements TopicContract.View { @Bind(R.id.recyclerView) RecyclerView mRecyclerView; @Bind(R.id.multiStateView) MultiStateView mMultiStateView; @Bind(R.id.swipe_layout) MySwipeRefreshLayout mSwipeLayout; private TopicListAdapter mAdapter; private List<TopicEntity> mTopicList; private int mUserId, mType; private int mPageIndex = 1; /** * * @param userId 用户 Id * @param type 用户分享、赞过的话题 * @return bundle */ public static Bundle newBundle(int userId, int type) { Bundle bundle = new Bundle(); bundle.putInt(Constants.Key.USER_ID, userId); bundle.putInt(Constants.Key.TOPIC_TYPE, type); return bundle; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.common_topic_list); ButterKnife.bind(this, getContentView()); } @Override public void initData() { super.initData(); mUserId = getArguments().getInt(Constants.Key.USER_ID); mType = getArguments().getInt(Constants.Key.TOPIC_TYPE); mTopicList = new ArrayList<>(); mAdapter = new TopicListAdapter(getContext(), mTopicList); } @Override public void initView() { super.initView(); mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext())); mRecyclerView.setAdapter(mAdapter); mSwipeLayout.setMode(PtrFrameLayout.Mode.LOAD_MORE); if (mType == Constants.User.USER_TOPIC_FOLLOW) { TextView mErrorTv = (TextView) mMultiStateView.getView(MultiStateView.VIEW_STATE_ERROR); mErrorTv.setText("该处接口暂时没有,给自己留下个坑 ~_~ "); } } @Override public void onDestroyView() { super.onDestroyView(); ButterKnife.unbind(this); } @Override public void initListener() { super.initListener(); mSwipeLayout.setPtrHandler(new PtrDefaultHandler2() { @Override public void onLoadMoreBegin(PtrFrameLayout ptrFrameLayout) { mPageIndex ++; mPresenter.getTopicListByUser(mType, mUserId, mPageIndex); } @Override public void onRefreshBegin(PtrFrameLayout ptrFrameLayout) { mPageIndex = 1; mPresenter.getTopicListByUser(mType, mUserId, mPageIndex); } }); } @Override public void initLoad() { super.initLoad(); mMultiStateView.setViewState(MultiStateView.VIEW_STATE_LOADING); getData(); } public void getData() { mSwipeLayout.post(new Runnable() { @Override public void run() { mSwipeLayout.autoRefresh(); } }); } @Override public void refreshTopicList(TopicListEntity topicListEntity) { if (mRecyclerView == null) return; if (topicListEntity.getData().size() == 0) { mSwipeLayout.refreshComplete(); mMultiStateView.setViewState(MultiStateView.VIEW_STATE_EMPTY); return; } mTopicList.clear(); mTopicList.addAll(topicListEntity.getData()); mRecyclerView.setAdapter(mAdapter); mMultiStateView.setViewState(MultiStateView.VIEW_STATE_CONTENT); } @Override public void loadMoreTopicList(TopicListEntity topicListEntity) { List<TopicEntity> temp = topicListEntity.getData(); if (temp.size() != 0) { mTopicList.addAll(temp); mAdapter.notifyDataSetChanged(); } } @Override public void onRequestStart() { } @Override public void onRequestEnd() { if (mSwipeLayout != null) mSwipeLayout.refreshComplete(); } @Override public void onInternetError() { super.onInternetError(); mMultiStateView.setViewState(MultiStateView.VIEW_STATE_ERROR); } @Override public void onRequestError(String msg) { super.onRequestError(msg); mMultiStateView.setViewState(MultiStateView.VIEW_STATE_ERROR); } }