package com.atguigu.beijingnews.detailpager; import android.content.Context; import android.support.design.widget.TabLayout; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.TextView; import com.atguigu.beijingnews.R; import com.atguigu.beijingnews.activity.MainActivity; import com.atguigu.beijingnews.base.MenuDetailBasePager; import com.atguigu.beijingnews.bean.NewsCenterBean; import com.slidingmenu.lib.SlidingMenu; import java.util.ArrayList; import java.util.List; import butterknife.ButterKnife; import butterknife.InjectView; import butterknife.OnClick; /** * 作者:尚硅谷-杨光福 on 2017/2/6 11:27 * 微信:yangguangfu520 * QQ号:541433511 * 作用:专题详情页面 */ public class TopicMenuDetailPager extends MenuDetailBasePager { /** * 新闻详情页面的数据 */ private final List<NewsCenterBean.DataBean.ChildrenBean> childrenData; /** * 页签页面的集合 */ private ArrayList<TabDetailPager> tabDetailPagers; @InjectView(R.id.viewpager) ViewPager viewpager; @InjectView(R.id.tabLayout) TabLayout tabLayout; @InjectView(R.id.ib_next) ImageButton ibNext; public TopicMenuDetailPager(Context context, NewsCenterBean.DataBean dataBean) { super(context); this.childrenData = dataBean.getChildren();//12条 } @Override public View initView() { //新闻详情页面的视图 View view = View.inflate(mContext, R.layout.topic_menu_detail_pager, null); ButterKnife.inject(this, view); return view; } @Override public void initData() { super.initData(); //准备数据-页面 tabDetailPagers = new ArrayList<>(); //根据有多少数据创建多少个TabDetailPager,并且把数据传入到对象中 for (int i = 0; i < childrenData.size(); i++) { tabDetailPagers.add(new TabDetailPager(mContext, childrenData.get(i))); } //设置适配器 viewpager.setAdapter(new TopicMenuDetailPager.MyPagerAdapter()); //要在设置适配器之后 tabLayout.setupWithViewPager(viewpager); //设置滑动的模式 tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE); viewpager.addOnPageChangeListener(new TopicMenuDetailPager.MyOnPageChangeListener()); //自定义的TabLayout效果 // for (int i = 0; i < tabLayout.getTabCount(); i++) { // TabLayout.Tab tab = tabLayout.getTabAt(i); // tab.setCustomView(getTabView(i)); // } } public View getTabView(int position){ View view = LayoutInflater.from(mContext).inflate(R.layout.tab_item, null); TextView tv= (TextView) view.findViewById(R.id.textView); tv.setText(childrenData.get(position).getTitle()); ImageView img = (ImageView) view.findViewById(R.id.imageView); img.setImageResource(R.drawable.dot_focus); return view; } class MyOnPageChangeListener implements ViewPager.OnPageChangeListener{ @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { MainActivity mainActivity = (MainActivity) mContext; if(position==0){ //北京-可以滑动 mainActivity.getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); }else{ //其他不能滑动 mainActivity.getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE); } } @Override public void onPageScrollStateChanged(int state) { } } @OnClick(R.id.ib_next) public void onClick() { //切换到下一个页面 viewpager.setCurrentItem(viewpager.getCurrentItem()+1); } class MyPagerAdapter extends PagerAdapter { @Override public CharSequence getPageTitle(int position) { return childrenData.get(position).getTitle(); } @Override public int getCount() { return tabDetailPagers.size(); } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } @Override public Object instantiateItem(ViewGroup container, int position) { TabDetailPager tabDetailPager = tabDetailPagers.get(position); tabDetailPager.initData();//不要忘记 View rootView = tabDetailPager.rootView; container.addView(rootView); return rootView; } } }