package io.github.zeleven.scallop.ui.modules.main.home.tabpage; import android.content.Context; import android.os.Bundle; import android.support.v4.content.ContextCompat; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.widget.DividerItemDecoration; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import java.util.List; import javax.inject.Inject; import butterknife.BindView; import io.github.zeleven.scallop.R; import io.github.zeleven.scallop.data.model.GanHuo; import io.github.zeleven.scallop.ui.adapter.GanhuoAdapter; import io.github.zeleven.scallop.ui.listener.EndlessRecyclerViewScrollListener; import io.github.zeleven.scallop.ui.base.BaseFragment; public class GanHuoPageFragment extends BaseFragment implements GanHuoPageContract.View { @Inject GanHuoPagePresenter presenter; @BindView(R.id.refresh_layout) SwipeRefreshLayout refreshLayout; @BindView(R.id.recycler_view) RecyclerView recyclerView; private GanhuoAdapter adapter; private String categoryName; private EndlessRecyclerViewScrollListener recyclerViewScrollListener; public static GanHuoPageFragment newInstance(String tabTitle) { Bundle args = new Bundle(); args.putString("TITLE", tabTitle); GanHuoPageFragment fragment = new GanHuoPageFragment(); fragment.setArguments(args); return fragment; } @Override public void onAttach(Context context) { super.onAttach(context); fragmentComponent.inject(this); } @Override public int getLayout() { return R.layout.swipe_refresh_recyclerview; } @Override public void onFragmentViewCreated() { super.onFragmentViewCreated(); if (presenter != null) { presenter.attachView(this); } String tabTitle = getArguments().getString("TITLE"); categoryName = tabTitle.equals(getContext().getString(R.string.tab_title_all)) ? "all" : tabTitle; LinearLayoutManager layoutManager = new LinearLayoutManager(getContext()); recyclerView.setLayoutManager(layoutManager); DividerItemDecoration itemDecoration = new DividerItemDecoration(getContext(), DividerItemDecoration.VERTICAL); itemDecoration.setDrawable(ContextCompat.getDrawable(getContext(), R.drawable.recycler_divider)); recyclerView.addItemDecoration(itemDecoration); adapter = new GanhuoAdapter(); recyclerView.setAdapter(adapter); recyclerViewScrollListener = new EndlessRecyclerViewScrollListener(layoutManager) { @Override public void onLoadMore(int page, int totalItemsCount, RecyclerView view) { adapter.setLoading(); presenter.getGanHuo(categoryName, page); } }; recyclerView.addOnScrollListener(recyclerViewScrollListener); refreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { presenter.getGanHuo(categoryName, 1); recyclerViewScrollListener.resetState(); adapter.clear(); adapter.resetFooter(); } }); refreshLayout.setRefreshing(true); presenter.getGanHuo(categoryName, 1); } @Override public void showError(String message) { super.showError(message); if (refreshLayout.isRefreshing()) { refreshLayout.setRefreshing(false); } adapter.resetFooter(); } @Override public void showList(List<GanHuo> data, int page) { if (page == 1) { refreshLayout.setRefreshing(false); adapter.setData(data); } else { if (data == null || (data != null && data.size() == 0)) { adapter.setNoMoreHint(); } adapter.appendItems(data); } } }