package com.novelbook.android.Fragments; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentStatePagerAdapter; import android.support.v4.view.ViewPager; import android.util.Log; import android.view.View; import com.flyco.tablayout.SlidingTabLayout; import com.novelbook.android.R; import com.novelbook.android.bean.BangdanCate; import com.novelbook.android.netsubscribe.BookSubscribe; import com.novelbook.android.netutils.OnSuccessAndFaultListener; import com.novelbook.android.netutils.OnSuccessAndFaultSub; import com.novelbook.android.utils.Constants; import com.novelbook.android.utils.GsonUtil; import com.umeng.analytics.MobclickAgent; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import q.rorbin.verticaltablayout.VerticalTabLayout; public class Fragment_bangdans extends BasicFragment { public static final String TAG= Fragment_bangdans.class.getSimpleName(); @BindView(R.id.viewpager) ViewPager mViewpager; @BindView(R.id.tablayout) VerticalTabLayout tabLayout; private FragmentStatePagerAdapter mAdapter =null; private ArrayList mFragments; ArrayList mList; String[] mTitle; List mCateList; protected void processArguments(){ if (getArguments() != null) { Bundle bundle = getArguments() ; } } public static Fragment_bangdans newInstance(String param1, String param2) { Fragment_bangdans fragment = new Fragment_bangdans(); Bundle args = new Bundle(); fragment.setArguments(args); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getArguments() != null) { // mParam1 = getArguments().getString(ARG_PARAM1); // mParam2 = getArguments().getString(ARG_PARAM2); } } @Override protected int getLayoutRes() { return R.layout.fragment_bangdans; } @Override public void initData() { showProgressDialog(false,"正在加载榜单列表"); getCateTabTtitle(); } @Override public void fillData() { // initTabs(); }; public void onSexSwitch(){ if(mAdapter!=null) { for(BasicFragment bf:mFragments){ bf.initData(); } mAdapter.notifyDataSetChanged(); } } @Override public void initViews(){ mFragments = new ArrayList<>(); mAdapter = new FragmentStatePagerAdapter(getChildFragmentManager()) { @Override public Fragment getItem(int position) { return mFragments.get(position); } @Override public int getCount() { return mFragments.size(); } //ViewPager与TabLayout绑定后,这里获取到PageTitle就是Tab的Text @Override public CharSequence getPageTitle(int position) { return mCateList.get(position).getName(); } }; // mViewpager.setAdapter(mAdapter); // tabLayout.setupWithViewPager(mViewpager); } //---------tabs------------- void initTabs() { Log.d(TAG, "getCateTabTtitle: init tabs"); // if(mFragments ==null || mFragments.size() ==0) { // mTitle = new String[]{"精选", "榜单", "书单"}; mFragments.clear(); for(BangdanCate bangdanCate : mCateList) { mFragments.add(Fragment_bangdan.newInstance(bangdanCate.getCid())); } // mFragments.add(new Fragment_shudan()); Log.d(TAG,"initial fragments in tabs "); } Log.d(TAG,"set viewPager adapter "); // FragmentPagerAdapter mAdapter = new FragmentPagerAdapter(activity.getSupportFragmentManager()) { 第一次进入没问题,再次进入ViewPager的fragment时里面内容就没了,数据丢失 https://blog.csdn.net/allan_bst/article/details/64920076 mAdapter.notifyDataSetChanged(); // mViewpager.setOffscreenPageLimit(30);//预加载设置 if(mCateList!=null){ mViewpager.setOffscreenPageLimit(mCateList.size()+1);//预加载设置 } mViewpager.setAdapter(mAdapter); tabLayout.setupWithViewPager(mViewpager); // tabLayout.setViewPager(mViewpager, mTitle, activity, mFragments); // mViewpager.setCurrentItem(0); } void getCateTabTtitle(){ Log.d(TAG, "getCateTabTtitle: prepare cate tabs"); BookSubscribe.getPaihangBangCateList(Constants.SEX,new OnSuccessAndFaultSub(new OnSuccessAndFaultListener() { @Override public void onSuccess(String result) { Log.d(TAG, String.format("init data HttpMethods successed on init, trycnt %s " ,error_try)); error_try =0; try { mCateList = GsonUtil.parserBangdanCate(result,"subCategories"); initTabs(); } catch (Exception e) { Log.e(TAG, "onSuccess: prepare book",e ); e.printStackTrace(); } handler.sendEmptyMessage(0); } @Override public void onFault(String errorMsg) { //失败 // Log.d(TAG, String.format("init data HttpMethods error on init, trycnt %s " ,error_try )); // getSearchTabTtitle(); retryErorr(0); } },getActivity())); } @Override public void onResume() { super.onResume(); MobclickAgent.onPageStart(TAG); } @Override public void onPause(){ super.onPause(); MobclickAgent.onPageEnd(TAG); } }