package coder.prettygirls.home; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.ActivityOptionsCompat; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.widget.StaggeredGridLayoutManager; import android.view.View; import android.view.ViewStub; import com.jude.easyrecyclerview.EasyRecyclerView; import com.jude.easyrecyclerview.adapter.BaseViewHolder; import com.jude.easyrecyclerview.adapter.RecyclerArrayAdapter; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.Unbinder; import coder.mylibrary.base.BaseFragment; import coder.prettygirls.R; import coder.prettygirls.data.bean.GirlsBean; import coder.prettygirls.girl.GirlActivity; import coder.prettygirls.util.LogUtil; /** * Created by oracleen on 2016/6/21. */ public class GirlsFragment extends BaseFragment implements GirlsContract.View, SwipeRefreshLayout.OnRefreshListener, RecyclerArrayAdapter.OnLoadMoreListener { public static final String TAG = "GirlsFragment"; @BindView(R.id.girls_recycler_view) EasyRecyclerView mGirlsRecyclerView; @BindView(R.id.network_error_layout) ViewStub mNetworkErrorLayout; private View networkErrorView; private ArrayList<GirlsBean.ResultsEntity> data; private GirlsAdapter mAdapter; private GirlsPresenter mPresenter; private int page = 1; private int size = 20; private Unbinder unbinder; @Override protected int getLayoutId() { return R.layout.fragment_home; } public static GirlsFragment getInstance() { GirlsFragment mainFragment = new GirlsFragment(); return mainFragment; } @Override protected void initView(View view, Bundle savedInstanceState) { unbinder = ButterKnife.bind(this, view); mPresenter = new GirlsPresenter(this); initRecyclerView(); //初始化数据 mPresenter.start(); } private void initRecyclerView() { data = new ArrayList<>(); StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL); mGirlsRecyclerView.setLayoutManager(staggeredGridLayoutManager); mAdapter = new GirlsAdapter(getContext()); mGirlsRecyclerView.setAdapterWithProgress(mAdapter); mAdapter.setMore(R.layout.load_more_layout, this); mAdapter.setNoMore(R.layout.no_more_layout); mAdapter.setError(R.layout.error_layout); // mAdapter.setOnItemClickListener(new RecyclerArrayAdapter.OnItemClickListener() { // @Override // public void onItemClick(int position) { // Intent intent = new Intent(mActivity, GirlActivity.class); // intent.putParcelableArrayListExtra("girls", data); // intent.putExtra("current", position); // startActivity(intent); // } // }); mAdapter.setOnMyItemClickListener(new GirlsAdapter.OnMyItemClickListener() { @Override public void onItemClick(int position, BaseViewHolder holder) { Intent intent = new Intent(mActivity, GirlActivity.class); intent.putParcelableArrayListExtra("girls", data); intent.putExtra("current", position); ActivityOptionsCompat options = ActivityOptionsCompat.makeScaleUpAnimation(holder.itemView, holder.itemView.getWidth() / 2, holder.itemView.getHeight() / 2, 0, 0); startActivity(intent, options.toBundle()); } }); mGirlsRecyclerView.setRefreshListener(this); } @Override public void onRefresh() { mPresenter.getGirls(1, size, true); page = 1; } @Override public void onLoadMore() { if (data.size() % 20 == 0) { LogUtil.d(TAG, "onloadmore"); page++; mPresenter.getGirls(page, size, false); } } @Override public void refresh(List<GirlsBean.ResultsEntity> datas) { data.clear(); data.addAll(datas); mAdapter.clear(); mAdapter.addAll(datas); } @Override public void load(List<GirlsBean.ResultsEntity> datas) { data.addAll(datas); mAdapter.addAll(datas); } @Override public void showError() { mGirlsRecyclerView.showError(); if (networkErrorView != null) { networkErrorView.setVisibility(View.VISIBLE); return; } networkErrorView = mNetworkErrorLayout.inflate(); } public void showNormal() { if (networkErrorView != null) { networkErrorView.setVisibility(View.GONE); } } @Override public void onDestroyView() { super.onDestroyView(); unbinder.unbind(); } }