package com.king.tv.mvp.fragment; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.bigkoo.convenientbanner.ConvenientBanner; import com.bigkoo.convenientbanner.holder.CBViewHolderCreator; import com.bigkoo.convenientbanner.holder.Holder; import com.bigkoo.convenientbanner.listener.OnItemClickListener; import com.bumptech.glide.Glide; import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.jude.easyrecyclerview.EasyRecyclerView; import com.jude.easyrecyclerview.adapter.RecyclerArrayAdapter; import com.jude.easyrecyclerview.decoration.SpaceDecoration; import com.king.base.util.LogUtils; import com.king.base.util.SystemUtils; import com.king.tv.Constants; import com.king.tv.R; import com.king.tv.bean.Banner; import com.king.tv.bean.Recommend; import com.king.tv.mvp.adapter.RecommendAdapter; import com.king.tv.mvp.base.BaseFragment; import com.king.tv.mvp.presenter.RecommendPresenter; import com.king.tv.mvp.view.IRecommendView; import com.king.tv.util.DensityUtil; import java.util.ArrayList; import java.util.List; import javax.inject.Inject; import butterknife.BindView; import butterknife.ButterKnife; /** * @author Jenly <a href="mailto:jenly1314@gmail.com">Jenly</a> * @since 2017/3/17 */ public class RecommendFragment extends BaseFragment<IRecommendView, RecommendPresenter> implements IRecommendView { private ConvenientBanner<Banner> convenientBanner; private TextView tvTips; @BindView(R.id.easyRecyclerView) EasyRecyclerView easyRecyclerView; RecommendAdapter recommendAdapter; private List<Recommend.RoomBean> listData; private List<Banner> listBanner; public static RecommendFragment newInstance() { Bundle args = new Bundle(); RecommendFragment fragment = new RecommendFragment(); fragment.setArguments(args); return fragment; } @Override public int getRootViewId() { return R.layout.fragment_recommend; } @Override public void initUI() { tvTips = (TextView) easyRecyclerView.findViewById(R.id.tvTips); SpaceDecoration spaceDecoration = new SpaceDecoration(0); easyRecyclerView.addItemDecoration(spaceDecoration); easyRecyclerView.setRefreshingColorResources(R.color.progress_color); listData = new ArrayList<>(); recommendAdapter = new RecommendAdapter(context,listData); listBanner = new ArrayList<>(); recommendAdapter.addHeader(new HeaderView(listBanner)); LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context,LinearLayoutManager.VERTICAL,false); easyRecyclerView.setLayoutManager(linearLayoutManager); easyRecyclerView.setAdapter(recommendAdapter); easyRecyclerView.setRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { getPresenter().getRecommend(); } }); } private void clickBannerItem(Banner banner){ if(banner!=null){ if(banner.isRoom()){//如果是房间类型就点击进入房间 startRoom(banner.getLink_object()); }else{//广告类型 startWeb(banner.getTitle(),banner.getLink()); } } } @Override public void onResume() { super.onResume(); if(convenientBanner!=null && !convenientBanner.isTurning()) { convenientBanner.startTurning(4000); } } @Override public void onPause() { super.onPause(); if(convenientBanner!=null){ convenientBanner.stopTurning(); } } public class TestHeader implements RecyclerArrayAdapter.ItemView{ @Override public View onCreateView(ViewGroup parent) { ImageView iv = new ImageView(context); iv.setImageResource(R.drawable.mine_default_avatar); return iv; } @Override public void onBindView(View headerView) { } } public class HeaderView implements RecyclerArrayAdapter.ItemView{ private List<Banner> listBanner; public HeaderView(List<Banner> listBanner){ this.listBanner = listBanner; } @Override public View onCreateView(ViewGroup parent) { View v = LayoutInflater.from(context).inflate(R.layout.banner,null); convenientBanner = (ConvenientBanner)v.findViewById(R.id.convenientBanner); convenientBanner.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(int position) { clickBannerItem(listBanner.get(position)); } }); return v; } @Override public void onBindView(View headerView) { convenientBanner.setPages(new CBViewHolderCreator() { @Override public Holder<Banner> createHolder() { return new ImageHolder(); } },listBanner) .setPageIndicator(new int[]{R.drawable.ic_dot_normal,R.drawable.ic_dot_pressed}) .setPageIndicatorAlign(ConvenientBanner.PageIndicatorAlign.CENTER_HORIZONTAL); if(!convenientBanner.isTurning()){ convenientBanner.startTurning(4000); } } } public class ImageHolder implements Holder<Banner>{ private ImageView iv; @Override public View createView(Context context) { iv = new ImageView(context); iv.setScaleType(ImageView.ScaleType.CENTER_CROP); return iv; } @Override public void UpdateUI(Context context, int position, Banner data) { Glide.with(context).load(data.getThumb()).placeholder(R.mipmap.live_default).error(R.mipmap.live_default).centerCrop().diskCacheStrategy(DiskCacheStrategy.SOURCE).into(iv); } } @Override public void initData() { easyRecyclerView.showProgress(); getPresenter().getRecommend(); getPresenter().getBanner(); } @Override public RecommendPresenter createPresenter() { return new RecommendPresenter(getApp()); } @Override public void onGetRecommend(Recommend recommend) { } @Override public void onGetRooms(List<Recommend.RoomBean> list) { // toSetList(listData,list,false); recommendAdapter.addAll(list); recommendAdapter.notifyDataSetChanged(); if(recommendAdapter.getCount()==0){ easyRecyclerView.showEmpty(); } } @Override public void onGetBanner(List<Banner> list) { if(convenientBanner!=null){ toSetList(listBanner,list,false); convenientBanner.notifyDataSetChanged(); } } @Override public void showProgress() { } @Override public void onCompleted() { easyRecyclerView.setRefreshing(false); } @Override public void onError(Throwable e) { LogUtils.w(e); if(SystemUtils.isNetWorkActive(context)){ tvTips.setText(R.string.page_load_failed); }else{ tvTips.setText(R.string.network_unavailable); } easyRecyclerView.showError(); } }