package com.example.jingbin.cloudreader.ui.gank; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.design.widget.TabLayout; import android.support.v4.app.Fragment; import com.example.jingbin.cloudreader.R; import com.example.jingbin.cloudreader.base.BaseFragment; import com.example.jingbin.cloudreader.databinding.FragmentGankBinding; import com.example.jingbin.cloudreader.http.rx.RxBus; import com.example.jingbin.cloudreader.http.rx.RxCodeConstants; import com.example.jingbin.cloudreader.ui.gank.child.AndroidFragment; import com.example.jingbin.cloudreader.ui.gank.child.CustomFragment; import com.example.jingbin.cloudreader.ui.gank.child.EverydayFragment; import com.example.jingbin.cloudreader.ui.gank.child.WelfareFragment; import com.example.jingbin.cloudreader.view.MyFragmentPagerAdapter; import java.util.ArrayList; import rx.Subscription; import rx.functions.Action1; /** * Created by jingbin on 16/11/21. * 展示干货的页面 */ public class GankFragment extends BaseFragment<FragmentGankBinding> { private ArrayList<String> mTitleList = new ArrayList<>(4); private ArrayList<Fragment> mFragments = new ArrayList<>(4); @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); showLoading(); initFragmentList(); /** * 注意使用的是:getChildFragmentManager, * 这样setOffscreenPageLimit()就可以添加上,保留相邻3个实例,切换时不会卡 * 但会内存溢出,在显示时加载数据 */ MyFragmentPagerAdapter myAdapter = new MyFragmentPagerAdapter(getChildFragmentManager(), mFragments, mTitleList); bindingView.vpGank.setAdapter(myAdapter); // 左右预加载页面的个数 bindingView.vpGank.setOffscreenPageLimit(3); myAdapter.notifyDataSetChanged(); bindingView.tabGank.setTabMode(TabLayout.MODE_FIXED); bindingView.tabGank.setupWithViewPager(bindingView.vpGank); showContentView(); // item点击跳转 initRxBus(); } @Override public int setContent() { return R.layout.fragment_gank; } private void initFragmentList() { mTitleList.add("每日推荐"); mTitleList.add("福利"); mTitleList.add("干货订制"); mTitleList.add("大安卓"); mFragments.add(new EverydayFragment()); mFragments.add(new WelfareFragment()); mFragments.add(new CustomFragment()); mFragments.add(AndroidFragment.newInstance("Android")); } /** * 每日推荐点击"更多"跳转 */ private void initRxBus() { Subscription subscription = RxBus.getDefault().toObservable(RxCodeConstants.JUMP_TYPE, Integer.class) .subscribe(new Action1<Integer>() { @Override public void call(Integer integer) { if (integer == 0) { bindingView.vpGank.setCurrentItem(3); } else if (integer == 1) { bindingView.vpGank.setCurrentItem(1); } else if (integer == 2) { bindingView.vpGank.setCurrentItem(2); } } }); addSubscription(subscription); } }