package tellh.com.gitclub.presentation.view.fragment.search; import android.support.v7.widget.RecyclerView; import com.tellh.nolistadapter.adapter.FooterLoadMoreAdapterWrapper; import com.tellh.nolistadapter.adapter.RecyclerViewAdapter; import com.tellh.nolistadapter.viewbinder.utils.EasyEmptyRecyclerViewBinder; import java.util.List; import tellh.com.gitclub.R; import tellh.com.gitclub.model.entity.UserEntity; import tellh.com.gitclub.presentation.view.adapter.viewbinder.ErrorViewBinder; import tellh.com.gitclub.presentation.view.adapter.viewbinder.LoadMoreFooterViewBinder; import tellh.com.gitclub.presentation.view.adapter.viewbinder.UserListItemViewBinder; import tellh.com.gitclub.presentation.view.fragment.ListFragment; import static com.tellh.nolistadapter.adapter.FooterLoadMoreAdapterWrapper.LOADING; import static com.tellh.nolistadapter.adapter.FooterLoadMoreAdapterWrapper.OnReachFooterListener; import static com.tellh.nolistadapter.adapter.FooterLoadMoreAdapterWrapper.PULL_TO_LOAD_MORE; import static com.tellh.nolistadapter.adapter.FooterLoadMoreAdapterWrapper.UpdateType; import static tellh.com.gitclub.presentation.contract.SearchContract.OnGetUserListener; import static tellh.com.gitclub.presentation.contract.SearchContract.OnListFragmentInteractListener; import static tellh.com.gitclub.presentation.contract.SearchContract.USER; public class SearchUserFragment extends ListFragment implements OnGetUserListener, OnReachFooterListener { private OnListFragmentInteractListener mListener; private FooterLoadMoreAdapterWrapper loadMoreWrapper; public static SearchUserFragment newInstance() { return new SearchUserFragment(); } @Override protected RecyclerView.Adapter getListAdapter() { assert mListener != null; loadMoreWrapper = (FooterLoadMoreAdapterWrapper) RecyclerViewAdapter.builder() .addItemType(new UserListItemViewBinder(mListener.getPresenter())) .setLoadMoreFooter(new LoadMoreFooterViewBinder(), recyclerView, this) .setErrorView(new ErrorViewBinder(this)) .setEmptyView(new EasyEmptyRecyclerViewBinder(R.layout.empty_view)) .build(); return loadMoreWrapper; } @Override protected int getLayoutId() { return R.layout.frag_items_list; } @Override public void onDetach() { super.onDetach(); mListener = null; } @Override public void onToLoadMore(int curPage) { mListener.onFetchPage(USER, curPage + 1); } @Override public void onGetUser(int total_count, List<UserEntity> items, @UpdateType int updateType) { loadMoreWrapper.OnGetData(items, updateType); } void setListFragmentInteractListener(OnListFragmentInteractListener listener) { mListener = listener; } @Override public void onRefresh() { mListener.onFetchPage(USER, 1); loadMoreWrapper.hideErrorView(recyclerView); } @Override public void hideLoading() { super.hideLoading(); if (loadMoreWrapper.getFooterStatus() == LOADING) loadMoreWrapper.setFooterStatus(PULL_TO_LOAD_MORE); } }