package com.example.administrator.cookman.ui.fragment; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.example.administrator.cookman.IView.ICookListView; import com.example.administrator.cookman.R; import com.example.administrator.cookman.constants.Constants; import com.example.administrator.cookman.model.entity.CookEntity.CookDetail; import com.example.administrator.cookman.model.entity.tb_cook.TB_CustomCategory; import com.example.administrator.cookman.presenter.CookListPresenter; import com.example.administrator.cookman.presenter.Presenter; import com.example.administrator.cookman.ui.activity.AboutActivity; import com.example.administrator.cookman.ui.activity.CookCategoryActivity; import com.example.administrator.cookman.ui.activity.CookCollectionListActivity; import com.example.administrator.cookman.ui.adapter.CookListAdapter; import com.example.administrator.cookman.ui.component.fab_transformation.FabTransformation; import com.example.administrator.cookman.ui.component.twinklingrefreshlayout.Footer.BottomProgressView; import com.example.administrator.cookman.ui.component.twinklingrefreshlayout.IBottomView; import com.example.administrator.cookman.ui.component.twinklingrefreshlayout.PeRefreshLayout.PeRefreshLayout; import com.example.administrator.cookman.ui.component.twinklingrefreshlayout.PeRefreshLayout.PeRefreshLayoutListener; import com.example.administrator.cookman.ui.component.twinklingrefreshlayout.RefreshListenerAdapter; import com.example.administrator.cookman.ui.component.twinklingrefreshlayout.TwinklingRefreshLayout; import com.example.administrator.cookman.ui.component.twinklingrefreshlayout.header.bezierlayout.BezierLayout; import com.example.administrator.cookman.utils.Logger.Logger; import com.example.administrator.cookman.utils.ToastUtil; import com.umeng.analytics.MobclickAgent; import java.util.ArrayList; import java.util.List; import butterknife.Bind; import butterknife.OnClick; /** * Created by Administrator on 2017/2/17. */ public class CookListFragment extends BaseFragment implements ICookListView , PeRefreshLayoutListener { @Bind(R.id.refreshLayout_data) public PeRefreshLayout peRefreshLayout; @Bind(R.id.view_overlay) public View viewOverlay; @Bind(R.id.fab_app) public FloatingActionButton floatingActionButton; @Bind(R.id.view_sheet) public View viewSheet; public TwinklingRefreshLayout twinklingRefreshLayout; public RecyclerView recyclerList; private CookListAdapter cookListAdapter; private TB_CustomCategory customCategoryData; private CookListPresenter cookListPresenter; @Override protected Presenter getPresenter(){ return cookListPresenter; } @Override protected int getLayoutId(){ return R.layout.fragment_cook_list; } @Override protected void initView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ peRefreshLayout.setPeRefreshLayoutListener(this); twinklingRefreshLayout = peRefreshLayout.getTwinklingRefreshLayout(); recyclerList = peRefreshLayout.getRecyclerView(); recyclerList.setLayoutManager(new LinearLayoutManager(recyclerList.getContext())); cookListAdapter = new CookListAdapter(getActivity()); recyclerList.setAdapter(cookListAdapter); BezierLayout headerView = new BezierLayout(getActivity()); headerView.setRoundProgressColor(getResources().getColor(R.color.colorPrimary)); headerView.setWaveColor(getResources().getColor(R.color.main_indicator_bg)); headerView.setRippleColor(getResources().getColor(R.color.white)); twinklingRefreshLayout.setHeaderView(headerView); twinklingRefreshLayout.setWaveHeight(140); BottomProgressView bottomProgressView = new BottomProgressView(twinklingRefreshLayout.getContext()); bottomProgressView.setAnimatingColor(getResources().getColor(R.color.colorPrimary)); twinklingRefreshLayout.setBottomView(bottomProgressView); twinklingRefreshLayout.setOverScrollBottomShow(true); final ArrayList<CookDetail> datas = new ArrayList<>(); cookListAdapter.setDataList(datas); cookListPresenter = new CookListPresenter(getActivity(), this); cookListPresenter.updateRefreshCookMenuByID(customCategoryData.getCtgId()); twinklingRefreshLayout.setOnRefreshListener(new RefreshListenerAdapter() { @Override public void onRefresh(final TwinklingRefreshLayout refreshLayout) { cookListPresenter.updateRefreshCookMenuByID(customCategoryData.getCtgId()); } @Override public void onLoadMore(final TwinklingRefreshLayout refreshLayout) { cookListPresenter.loadMoreCookMenuByID(customCategoryData.getCtgId()); } }); } @OnClick(R.id.fab_app) public void onClickFabApp(){ if (floatingActionButton.getVisibility() == View.VISIBLE) { FabTransformation.with(floatingActionButton).setOverlay(viewOverlay).transformTo(viewSheet); } } @OnClick(R.id.view_overlay) public void onClickOverlay() { closeFabMenu(); } @OnClick(R.id.relative_category) public void onClickCategory(){ MobclickAgent.onEvent(getActivity(), Constants.Umeng_Event_Id_Category); CookCategoryActivity.startActivity(getActivity()); onClickOverlay(); } @OnClick(R.id.relative_collection) public void onClickCollection(){ MobclickAgent.onEvent(getActivity(), Constants.Umeng_Event_Id_Collection_See); CookCollectionListActivity.startActivity(getActivity()); onClickOverlay(); } @OnClick(R.id.relative_about) public void onClickAbout(){ MobclickAgent.onEvent(getActivity(), Constants.Umeng_Event_Id_About); AboutActivity.startActivity(getActivity()); onClickOverlay(); } /********************************************************************************************/ @Override public void onCookListUpdateRefreshSuccess(ArrayList<CookDetail> list){ if(peRefreshLayout.isShowDataView()){ peRefreshLayout.setModeList(); } twinklingRefreshLayout.finishRefreshing(); cookListAdapter.setDataList(conversion(list)); cookListAdapter.notifyDataSetChanged(); } @Override public void onCookListUpdateRefreshFaile(String msg){ if(peRefreshLayout.isShowDataView()){ peRefreshLayout.setModeException(msg); return ; } twinklingRefreshLayout.finishRefreshing(); ToastUtil.showToast(getActivity(), msg); } @Override public void onCookListLoadMoreSuccess(ArrayList<CookDetail> list){ twinklingRefreshLayout.finishLoadmore(); cookListAdapter.addItems(conversion(list)); } @Override public void onCookListLoadMoreFaile(String msg){ twinklingRefreshLayout.finishLoadmore(); ToastUtil.showToast(getActivity(), msg); } /********************************************************************************************/ @Override public void onPeRefreshLayoutClick(){ cookListPresenter.updateRefreshCookMenuByID(customCategoryData.getCtgId()); } /********************************************************************************************/ private List<CookDetail> conversion(ArrayList<CookDetail> list){ List<CookDetail> datas = new ArrayList<>(); for(CookDetail item : list){ datas.add(item); } return datas; } public boolean closeFabMenu(){ if (floatingActionButton.getVisibility() != View.VISIBLE) { FabTransformation.with(floatingActionButton).setOverlay(viewOverlay).transformFrom(viewSheet); return true; } return false; } public void setCustomCategoryData(TB_CustomCategory customCategoryData){ this.customCategoryData = customCategoryData; } }