package com.pandaq.pandaeye.modules.video.videodetail.mvp; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.widget.DefaultItemAnimator; import android.support.v7.widget.StaggeredGridLayoutManager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.pandaq.pandaeye.R; import com.pandaq.pandaeye.modules.video.videodetail.VideoInfoAdapter; import com.pandaq.pandaeye.config.Constants; import com.pandaq.pandaeye.rxbus.RxBus; import com.pandaq.pandaeye.rxbus.RxConstants; import com.pandaq.pandaeye.BaseFragment; import com.pandaq.pandaeye.utils.DensityUtil; import com.pandaq.pandaqlib.FoldableTextView; import com.pandaq.pandaqlib.magicrecyclerView.BaseItem; import com.pandaq.pandaqlib.magicrecyclerView.BaseRecyclerAdapter; import com.pandaq.pandaqlib.magicrecyclerView.MagicRecyclerView; import com.pandaq.pandaqlib.magicrecyclerView.SpaceDecoration; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; /** * Created by PandaQ on 2017/3/2. * 视频简介 fragment */ public class VideoInfoFragment extends BaseFragment implements VideoInfoContract.View, BaseRecyclerAdapter.OnItemClickListener { @BindView(R.id.tv_empty_msg) TextView mTvEmptyMsg; @BindView(R.id.mrv_recommend) MagicRecyclerView mMrvRecommend; private FoldableTextView mFoldableTextView; private ArrayList<BaseItem> mBaseItems; private VideoInfoAdapter mAdapter; private String currentId = ""; private VideoInfoFragPresenter mPresenter = new VideoInfoFragPresenter(this); @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.video_description_fragment, container, false); ButterKnife.bind(this, view); initView(); return view; } private void initView() { mBaseItems = new ArrayList<>(); mFoldableTextView = (FoldableTextView) mMrvRecommend.getHeaderView().findViewById(R.id.ftv_content_text); mMrvRecommend.setLayoutManager(new StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL)); mMrvRecommend.setItemAnimator(new DefaultItemAnimator()); mMrvRecommend.getItemAnimator().setChangeDuration(0); SpaceDecoration itemDecoration = new SpaceDecoration(DensityUtil.dip2px(getContext(), 8)); itemDecoration.setPaddingEdgeSide(true); itemDecoration.setPaddingStart(true); itemDecoration.setPaddingHeaderFooter(false); mMrvRecommend.addItemDecoration(itemDecoration); currentId = getArguments().getString(Constants.BUNDLE_KEY_DATAID); loadInfo(); } @Override public void onItemClick(int position, BaseItem data, View view) { MovieInfo.ListBean.ChildListBean childListBean = (MovieInfo.ListBean.ChildListBean) data.getData(); currentId = childListBean.getDataId(); loadInfo(); // 通知Activity 修改播放器图片 RxBus.getDefault().postWithCode(RxConstants.LOADED_VIDEO_PIC_CODE, childListBean.getPic()); //通知评论Fragment Id已变更 RxBus.getDefault().postWithCode(RxConstants.ACCEPT_VIDEO_DATAID, childListBean.getDataId()); } @Override public void loadInfo() { mPresenter.loadVideoInfo(); } @Override public String getDataId() { return currentId; } @Override public void loadInfoFail(String errCode, String errMsg) { mTvEmptyMsg.setVisibility(View.VISIBLE); mTvEmptyMsg.setText(errMsg); } @Override public void loadInfoSuccess(MovieInfo movieInfo) { mTvEmptyMsg.setVisibility(View.GONE); String sb = "上映时间:" + movieInfo.getAirTime() + "\n" + "导演:" + movieInfo.getDirector() + "\n" + "主演:" + movieInfo.getActors() + "\n" + "剧情简介:" + movieInfo.getDescription(); mFoldableTextView.setText(sb); mBaseItems.clear(); List<MovieInfo.ListBean> listBeen = movieInfo.getList(); for (MovieInfo.ListBean.ChildListBean listBean : listBeen.get(listBeen.size() - 1).getChildList()) { BaseItem<MovieInfo.ListBean.ChildListBean> baseItem = new BaseItem<>(); baseItem.setData(listBean); mBaseItems.add(baseItem); } if (mAdapter == null) { mAdapter = new VideoInfoAdapter(this); mAdapter.setBaseDatas(mBaseItems); mMrvRecommend.setAdapter(mAdapter); mMrvRecommend.addOnItemClickListener(this); } else { mAdapter.setBaseDatas(mBaseItems); } } @Override public void onPause() { super.onPause(); mPresenter.dispose(); } }