在我们平时的开发当中,随处可见的上面一个指示器,当然用Indicator或者Tablayout都可以,然后配合viewPager进行联动,viewPager里面装着fragment,fragment里面才是我们对应的逻辑和UI操作,举个例子?
向上面的网易新闻一样,2个fragment大致布局相似,都是轮播图加list,像这样的我们完全可以用一个fragment来实现,根据postion来判断,不论是请求网络还是填充数据,或者是逻辑操作,都可以搞定,so。。。下面是实现:
首先是viewPager和Indicator的联动:Acitivity的代码
NewsTabAdapter newsTabAdapter = new NewsTabAdapter(getSupportFragmentManager(),classList,advlist); adviceTab.setupWithViewPager(advieVp); adviceTab.setTabMode(TabLayout.MODE_SCROLLABLE); advieVp.setAdapter(newsTabAdapter); advieVp.setCurrentItem(0);
接下来是TabAdapter的代码:
@Override public Fragment getItem(int position) { NewsFragment newsFragment = new NewsFragment(); Bundle bundle = new Bundle(); bundle.putString("acId",classArray.get(position).acId); //分类ID newsFragment.setArguments(bundle); return newsFragment; }
在上面的getItem方法中,我们创建了真正需要展示数据和UI的fragment,然后通过bundle传给fragment,当然这里我是利用的分类ID 作为标识;
接下来咱我们的fragment重写的 OncreateView()方法里
通过拿到的分类ID ,当然也可能是其他的标识,进行相应的逻辑操作,赋值数据或者网络操作;
这样是不是比我们普通的创建多个fragment,然后再添加到viewPager里,代码简单了很多,over!