package com.team.zhuoke.view.home.fragment;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.view.ViewPager;
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 android.widget.GridView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import com.team.zhuoke.R;
import com.team.zhuoke.base.BaseFragment;
import com.team.zhuoke.base.BaseView;
import com.team.zhuoke.model.logic.home.HomeCateModelLogic;
import com.team.zhuoke.model.logic.home.bean.HomeCateList;
import com.team.zhuoke.model.logic.home.bean.HomeRecommendHotCate;
import com.team.zhuoke.presenter.home.impl.HomeCatePresenterImp;
import com.team.zhuoke.presenter.home.interfaces.HomeCateContract;
import com.team.zhuoke.ui.refreshview.XRefreshView;
import com.team.zhuoke.view.home.adapter.HomeNgBarAdapter;
import com.team.zhuoke.view.home.adapter.HomeNgBarViewPagerAdapter;
import com.team.zhuoke.view.home.adapter.HomeOtherAdapter;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
/**
* 作者:gaoyin
* 电话:18810474975
* 邮箱:18810474975@163.com
* 版本号:1.0
* 类描述:
* 备注消息:首页 列表页 显示 手游,娱乐,游戏,趣玩等!
* 修改时间:2016/12/14 下午8:17
**/
public class OtherHomeFragment extends BaseFragment<HomeCateModelLogic, HomeCatePresenterImp> implements HomeCateContract.View, ViewPager.OnPageChangeListener {
/**
* 导航栏 分页
*/
//// 小圆点指示器
// protected ViewGroup mPoints;
// 小圆点图片集合
private ImageView[] mIvpoints;
//添加HaderView
private View haderView;
// 导航栏
ViewPager ngbarViewpager;
private HomeCateList mHomeCate;
@BindView(R.id.other_content_recyclerview)
RecyclerView other_content_recyclerview;
@BindView(R.id.rtefresh_content)
XRefreshView rtefreshContent;
private HomeOtherAdapter adapter;
private static List<OtherHomeFragment> mOtherHomeFraments = new ArrayList<OtherHomeFragment>();
private HomeNgBarViewPagerAdapter homeNgBarViewPagerAdapter;
private HomeNgBarAdapter homeNgBarAdapter;
public static OtherHomeFragment getInstance(HomeCateList args, int position) {
OtherHomeFragment mInstance = new OtherHomeFragment();
Bundle bundle = new Bundle();
bundle.putSerializable("homecatelist", args);
bundle.putString("type", args.getShow_order());
bundle.putInt("position", position - 1);
mInstance.setArguments(bundle);
mOtherHomeFraments.add(position - 1, mInstance);
return mInstance;
}
@Override
protected int getLayoutId() {
return R.layout.fragment_home_otherlist;
}
@Override
protected void onInitView(Bundle bundle) {
refresh();
setXrefeshViewConfig();
}
@Override
protected void onEvent() {
rtefreshContent.setXRefreshViewListener(new XRefreshView.SimpleXRefreshListener() {
@Override
public void onRefresh() {
// 延迟500毫秒, 原因 用户体验好 !!!
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Bundle arguments = getArguments();
mHomeCate = (HomeCateList) arguments.getSerializable("homecatelist");
String show_order = arguments.getString("type");
if (show_order.equals(mHomeCate.getShow_order())) {
mPresenter.getHomeCateRefresh(mHomeCate.getIdentification());
}
}
}, 500);
}
});
}
private void refresh() {
Bundle arguments = getArguments();
mHomeCate = (HomeCateList) arguments.getSerializable("homecatelist");
String show_order = arguments.getString("type");
if (show_order.equals(mHomeCate.getShow_order())) {
mPresenter.getHomeCate(mHomeCate.getIdentification());
}
}
@Override
protected BaseView getViewImp() {
// Bundle arguments = getArguments();
// return mOtherHomeFraments.get(arguments.getInt("position"));
return this;
}
final RecyclerView.RecycledViewPool pool = new RecyclerView.RecycledViewPool() {
@Override
public void putRecycledView(RecyclerView.ViewHolder scrap) {
super.putRecycledView(scrap);
}
@Override
public RecyclerView.ViewHolder getRecycledView(int viewType) {
final RecyclerView.ViewHolder recycledView = super.getRecycledView(viewType);
return recycledView;
}
};
/**
* 配置XRefreshView
*/
protected void setXrefeshViewConfig() {
rtefreshContent.setPinnedTime(2000);
rtefreshContent.setPullLoadEnable(false);
rtefreshContent.setPullRefreshEnable(true);
rtefreshContent.setMoveForHorizontal(true);
rtefreshContent.setPinnedContent(true);
}
/**
* 进行懒加载 只进行加载一次
*/
@Override
protected void lazyFetchData() {
}
@Override
public void getOtherList(List<HomeRecommendHotCate> homeCates) {
if (rtefreshContent != null) {
rtefreshContent.stopRefresh();
}
getOtherColumnView(homeCates);
/**
* 分页 导航栏+栏目列表
*
* @param homeCates
*/
getNgBarView(homeCates);
}
@Override
public void getOtherListRefresh(List<HomeRecommendHotCate> homeCates) {
if (rtefreshContent != null) {
rtefreshContent.stopRefresh();
}
List<HomeRecommendHotCate> homeRecommendHotCates = new ArrayList<HomeRecommendHotCate>();
homeRecommendHotCates.addAll(homeCates);
for (int i = 0; i < homeRecommendHotCates.size(); i++) {
if (homeRecommendHotCates.get(i).getRoom_list().size() < 4) {
homeRecommendHotCates.remove(i);
}
}
if (adapter != null) {
adapter.getAllColumn(homeCates);
}
}
private void getOtherColumnView(List<HomeRecommendHotCate> homeCates) {
List<HomeRecommendHotCate> homeRecommendHotCates = new ArrayList<HomeRecommendHotCate>();
homeRecommendHotCates.addAll(homeCates);
for (int i = 0; i < homeRecommendHotCates.size(); i++) {
if (homeRecommendHotCates.get(i).getRoom_list().size() < 4) {
homeRecommendHotCates.remove(i);
}
}
/**
* 栏目 列表
*/
adapter = new HomeOtherAdapter(getContext(), homeRecommendHotCates);
other_content_recyclerview.setLayoutManager(new LinearLayoutManager(getContext()));
pool.setMaxRecycledViews(adapter.getItemViewType(0), 500);
other_content_recyclerview.setRecycledViewPool(pool);
other_content_recyclerview.setAdapter(adapter);
}
public void getNgBarView(List<HomeRecommendHotCate> homeCates) {
// 总共多少页
int mTotalPage;
// 每页显示的最大数量 默认为8
int mPageSize = 8;
// GridView 作为一个View对象添加到ViewPager集合中
List<View> mViewPageList;
// 当前页
int mCurrentPage;
// 小圆点
ViewGroup mPoints;
// 导航栏
haderView = adapter.setHeaderView(R.layout.view_viewpager, other_content_recyclerview);
ngbarViewpager = (ViewPager) haderView.findViewById(R.id.ngbar_viewpager);
Bundle arguments = getArguments();
ngbarViewpager.removeOnPageChangeListener(mOtherHomeFraments.get(arguments.getInt("position")));
ngbarViewpager.addOnPageChangeListener(mOtherHomeFraments.get(arguments.getInt("position")));
mPoints = (ViewGroup) haderView.findViewById(R.id.points);
LayoutInflater inflater = LayoutInflater.from(getActivity());
// 显示总的页数 Math.ceil 先上取整
mTotalPage = (int) Math.ceil(homeCates.size() * 1.0 / mPageSize);
mViewPageList = new ArrayList<>();
// 移除最热栏目
homeCates.remove(0);
/**
* 创建 多个GredView
*/
for (int i = 0; i < mTotalPage; i++) {
if (i <= 1) {
GridView gridView = (GridView) inflater.inflate(R.layout.view_layout_gridview, null);
homeNgBarAdapter = new HomeNgBarAdapter(getContext(), homeCates, i, mPageSize);
gridView.setAdapter(homeNgBarAdapter);
homeNgBarAdapter.notifyDataSetChanged();
// 每一个GridView 作为一个View 对象添加到ViewPage集合中
mViewPageList.add(gridView);
}
}
homeNgBarViewPagerAdapter = new HomeNgBarViewPagerAdapter(mViewPageList);
ngbarViewpager.setAdapter(homeNgBarViewPagerAdapter);
homeNgBarViewPagerAdapter.notifyDataSetChanged();
/**
* 处理小圆点 指示器
*/
// 创建小圆点
mIvpoints = null;
mIvpoints = new ImageView[2];
for (int i = 0; i < mIvpoints.length; i++) {
if (i <= 1) {
ImageView imgView = new ImageView(getActivity());
// 设置小圆点宽和高
imgView.setLayoutParams(new ViewGroup.LayoutParams(5, 5));
// 默认设置
if (i == 0) {
imgView.setBackgroundResource(R.mipmap.page__selected_indicator);
} else {
imgView.setBackgroundResource(R.mipmap.page__normal_indicator);
}
mIvpoints[i] = imgView;
// 设置边距
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT
, ViewGroup.LayoutParams.WRAP_CONTENT));
layoutParams.leftMargin = 10;
layoutParams.rightMargin = 10;
mPoints.addView(imgView, layoutParams);
}
}
if (mTotalPage == 1) {
mPoints.setVisibility(View.GONE);
}
}
@Override
public void showErrorWithStatus(String msg) {
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
for (int i = 0; i < mIvpoints.length; i++) {
if (i == position) {
mIvpoints[i].setBackgroundResource(R.mipmap.page__selected_indicator);
} else {
mIvpoints[i].setBackgroundResource(R.mipmap.page__normal_indicator);
}
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
}