package org.cuieney.videolife.ui.fragment.music;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.transition.Fade;
import android.transition.Slide;
import org.cuieney.videolife.R;
import org.cuieney.videolife.common.base.BaseFragment;
import org.cuieney.videolife.common.component.EventUtil;
import org.cuieney.videolife.entity.MusicListBean;
import org.cuieney.videolife.presenter.MusicHomePresenter;
import org.cuieney.videolife.presenter.contract.MusicHomeContract;
import org.cuieney.videolife.ui.adapter.MusicAdapter;
import org.cuieney.videolife.common.base.DetailTransition;
import org.cuieney.videolife.ui.widget.EndLessOnScrollListener;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
/**
* Created by cuieney on 17/3/4.
*/
public class MusicHomeFragment extends BaseFragment<MusicHomePresenter> implements MusicHomeContract.View {
@BindView(R.id.recycler)
RecyclerView recycler;
@BindView(R.id.refresh)
SwipeRefreshLayout refresh;
private List<MusicListBean> mMusicList;
private int pager = 1;
private MusicAdapter adapter;
public static MusicHomeFragment newInstance() {
Bundle bundle = new Bundle();
MusicHomeFragment musicHomeFragment = new MusicHomeFragment();
musicHomeFragment.setArguments(bundle);
return musicHomeFragment;
}
@Override
protected void initInject() {
getFragmentComponent().inject(this);
}
@Override
protected int getLayoutId() {
return R.layout.music_home_fragment;
}
@Override
protected void initEventAndData() {
refresh.setProgressViewOffset(false,100,200);
refresh.setOnRefreshListener(() -> mPresenter.getMusicData("1"));
GridLayoutManager layout = new GridLayoutManager(getActivity(), 2);
recycler.setLayoutManager(layout);
recycler.addOnScrollListener(new EndLessOnScrollListener(layout,1) {
@Override
public void onLoadMore() {
mPresenter.getMusicData(pager+"");
}
});
mMusicList = new ArrayList<>();
adapter = new MusicAdapter(getActivity(),mMusicList);
recycler.setAdapter(adapter);
adapter.setOnItemClickListener((position, view, vh) -> {
startChildFragment(mMusicList.get(position), vh);
});
mPresenter.getMusicData(pager+"");
}
@Override
public void showContent(List<MusicListBean> musicListBean) {
musicListBean.add(0,new MusicListBean());
musicListBean.add(0,new MusicListBean());
if (refresh.isRefreshing()) {
refresh.setRefreshing(false);
pager =1;
adapter.clear();
mMusicList.clear();
adapter.addAll(musicListBean);
recycler.setAdapter(adapter);
}else{
adapter.addAll(musicListBean);
pager++;
}
mMusicList.addAll(musicListBean);
}
private void startChildFragment(MusicListBean musicListBean, RecyclerView.ViewHolder vh) {
EventUtil.sendEvent(true + "");
MusicDetailFragment fragment = MusicDetailFragment.newInstance(
musicListBean
);
// 这里是使用SharedElement的用例
// LOLLIPOP(5.0)系统的 SharedElement支持有 系统BUG, 这里判断大于 > LOLLIPOP
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
setExitTransition(new Fade());
fragment.setEnterTransition(new Slide());
fragment.setSharedElementReturnTransition(new DetailTransition());
fragment.setSharedElementEnterTransition(new DetailTransition());
// 25.1.0以下的support包,Material过渡动画只有在进栈时有,返回时没有;
// 25.1.0+的support包,SharedElement正常
fragment.transaction()
.addSharedElement(((MusicAdapter.MyViewHoler) vh).imageView, getString(R.string.image_transition))
.commit();
}
start(fragment);
}
@Override
public void error(Throwable throwable) {
}
}