/* * Copyright 2016 Freelander * <p> * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * <p> * http://www.apache.org/licenses/LICENSE-2.0 * <p> * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ 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.view.View; 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.topic.publish.TopicPublishActivity; import com.jun.elephant.ui.widget.MultiStateView; import com.jun.elephant.ui.widget.MySwipeRefreshLayout; import com.melnykov.fab.FloatingActionButton; 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/4/18. */ public class TopicListByMeFragment extends BaseFrameFragment<TopicPresenter, TopicModel> implements TopicContract.View { @Bind(R.id.recyclerView) RecyclerView mRecyclerView; @Bind(R.id.swipe_layout) MySwipeRefreshLayout mSwipeLayout; @Bind(R.id.multiStateView) MultiStateView mMultiStateView; @Bind(R.id.fab) FloatingActionButton mFabBtn; private List<TopicEntity> mTopicList; public int TYPE = Constants.User.USER_TOPIC_MY; private int mUserId; private TopicListAdapter mAdapter; private int mPageIndex = 1; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fragment_topic_list); ButterKnife.bind(this, getContentView()); } @Override public void initData() { super.initData(); mTopicList = new ArrayList<>(); mAdapter = new TopicListAdapter(getContext(), mTopicList); mUserId = getUserConstant().getUserData().getData().getId(); } @Override public void initView() { super.initView(); mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext())); mRecyclerView.setAdapter(mAdapter); } @Override public void initListener() { super.initListener(); mFabBtn.attachToRecyclerView(mRecyclerView); mSwipeLayout.setPtrHandler(new PtrDefaultHandler2() { @Override public void onLoadMoreBegin(PtrFrameLayout ptrFrameLayout) { mPageIndex ++; mPresenter.getTopicListByUser(TYPE, mUserId, mPageIndex); } @Override public void onRefreshBegin(PtrFrameLayout ptrFrameLayout) { mPageIndex = 1; mPresenter.getTopicListByUser(TYPE, mUserId, mPageIndex); } }); mFabBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { openActivity(TopicPublishActivity.class); } }); } @Override public void initLoad() { super.initLoad(); mMultiStateView.setViewState(MultiStateView.VIEW_STATE_LOADING); getData(); } public void getData() { int state = mMultiStateView.getViewState(); if (state == MultiStateView.VIEW_STATE_EMPTY || state == MultiStateView.VIEW_STATE_ERROR) { mPageIndex = 1; mMultiStateView.setViewState(MultiStateView.VIEW_STATE_LOADING); mPresenter.getTopicListByUser(TYPE, mUserId, mPageIndex); return; } mSwipeLayout.post(new Runnable() { @Override public void run() { mSwipeLayout.autoRefresh(); } }); } @Override public void refreshTopicList(TopicListEntity topicListEntity) { if (topicListEntity.getData().size() == 0) { mMultiStateView.setViewState(MultiStateView.VIEW_STATE_EMPTY); return; } mTopicList.clear(); mTopicList.addAll(topicListEntity.getData()); mAdapter.notifyDataSetChanged(); 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 onRequestError(String msg) { super.onRequestError(msg); mMultiStateView.setViewState(MultiStateView.VIEW_STATE_ERROR); } }