package com.atguigu.beijingnews.fragment; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.view.View; import android.view.ViewGroup; import android.widget.RadioGroup; import com.atguigu.beijingnews.R; import com.atguigu.beijingnews.activity.MainActivity; import com.atguigu.beijingnews.base.BaseFragment; import com.atguigu.beijingnews.base.BasePager; import com.atguigu.beijingnews.pager.HomePager; import com.atguigu.beijingnews.pager.NewsCenterPager; import com.atguigu.beijingnews.pager.SettingPager; import com.atguigu.beijingnews.view.NoScrollViewPager; import com.slidingmenu.lib.SlidingMenu; import java.util.ArrayList; import butterknife.ButterKnife; import butterknife.InjectView; /** * 作者:尚硅谷-杨光福 on 2017/2/5 14:55 * 微信:yangguangfu520 * QQ号:541433511 * 作用:左侧菜单 */ public class ContentFragment extends BaseFragment { @InjectView(R.id.viewpager) NoScrollViewPager viewpager; @InjectView(R.id.rg_main) RadioGroup rgMain; /** * 三个页面的集合 */ private ArrayList<BasePager> basePagers; @Override public View initView() { View view = View.inflate(mContext, R.layout.fragment_content, null); //把view注入到ButterKnife ButterKnife.inject(this, view); return view; } @Override public void initData() { super.initData(); //初始化3个页面 initPager(); //设置适配器 setAdapter(); //设置RadioGroup状态选中的监听 initListener(); } private void initListener() { rgMain.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { //先默认设置不可以滑动 MainActivity mainActivity = (MainActivity) mContext; mainActivity.getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE); switch (checkedId){ case R.id.rb_home: viewpager.setCurrentItem(0,false); break; case R.id.rb_news: //Viewpager,切换到不同页面的方法 viewpager.setCurrentItem(1,false); //当切换到新闻的时候,修改成可以滑动 mainActivity.getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); break; case R.id.rb_setting: viewpager.setCurrentItem(2,false); break; } } }); rgMain.check(R.id.rb_news); //监听页面的选中 viewpager.addOnPageChangeListener(new MyOnPageChangeListener()); basePagers.get(1).initData();//孩子的视图和父类的FrameLayout结合 } /** * 得到新闻中心 * @return */ public NewsCenterPager getNewsCenterPager() { return (NewsCenterPager) basePagers.get(1); } class MyOnPageChangeListener implements ViewPager.OnPageChangeListener{ @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { // BasePager basePager = basePagers.get(position);//HomePager、NewsCenterPager,SetttingPager //调用initData basePagers.get(position).initData();//孩子的视图和父类的FrameLayout结合 } @Override public void onPageScrollStateChanged(int state) { } } /** * 设置ViewPager的适配器 */ private void setAdapter() { viewpager.setAdapter(new MyPagerAdapter()); } class MyPagerAdapter extends PagerAdapter{ @Override public int getCount() { return basePagers.size(); } @Override public boolean isViewFromObject(View view, Object object) { return view ==object; } @Override public Object instantiateItem(ViewGroup container, int position) { BasePager basePager = basePagers.get(position);//HomePager、NewsCenterPager,SetttingPager View rootView = basePager.rootView;//代表不同页面的实例 //调用initData // basePager.initData();//孩子的视图和父类的FrameLayout结合 container.addView(rootView); return rootView; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } } private void initPager() { basePagers = new ArrayList<>(); basePagers.add(new HomePager(mContext));//主页 basePagers.add(new NewsCenterPager(mContext));//新闻中心 basePagers.add(new SettingPager(mContext));//设置中心 } @Override public void onDestroyView() { super.onDestroyView(); ButterKnife.reset(this); } }