您的位置:首页 > 其它

TabLayout,ViewPager(Fragment)的简单应用实例,以及RecyclerView所遭遇的问题

2017-03-29 17:36 507 查看


1、tablayout与viewpager(Fragment)的实例应用



大概这种效果。

首先导入依赖:

compile 'com.android.support:design:25.3.0'

其次xml代码:

<android.support.design.widget.TabLayout
android:id="@+id/tl_news"
android:layout_width="match_parent"
android:layout_height="40dp"
app:tabIndicatorColor="@color/define_dark_red"
app:tabSelectedTextColor="@color/define_dark_red"
app:tabTextColor="@color/black"
>
</android.support.design.widget.TabLayout>
<android.support.v4.view.ViewPager
android:id="@+id/vp_news"
android:layout_width="match_parent"
android:layout_height="wrap_content">

</android.support.v4.view.ViewPager>

简单的代码:

initTabTitles();//初始化TabLayout中的标签,方式多样只举一种
initvpFragments();//初始化在ViewPager中所需要使用到的Fragment
vp_news.setOffscreenPageLimit(fragments.size());//这个也很关键,设置ViewPager所承载Fragment的缓冲数与RecyclerView:No Adapter skip layout造成页面空白有关
NewsFragmentsAdapter newsFragmentsAdapter=new NewsFragmentsAdapter(getChildFragmentManager(),fragments,titles);
vp_news.setAdapter(newsFragmentsAdapter);
tl_news.setupWithViewPager(vp_news);//关联TabLayout与ViewPager

两个简单的初始化:

private void initvpFragments() {
fragments=new ArrayList<>();
fragments.add(new InfoFragment().newInstance(0));//这么写是避免使用Fragment的构造传递参数,
fragments.add(new InfoFragment().newInstance(1));//参考:Avoid non-default constructors in fragments: use a default constructor plus Fragment报错的解决方法
fragments.add(new InfoFragment().newInstance(2));//针对上面的连接,不是非要在onCreate中获取参数。
fragments.add(new InfoFragment().newInstance(3));//InfoFragment自己随便写一个。
}

private void initTabTitles() {
titles=new String[4];
titles[0]="行业";
titles[1]="财富";
titles[2]="故事";
titles[3]="媒体";
}



2、在下拉刷新后滑动,不再显示Fragment内容的错误  RecyclerView: No adapter attached; skipping layout

个人实验:ViewPager的FragmentPagerAdapter默认保存的是三个Fragment;然后其他的程序就会自动重新加                            载(?没具体实验),这种机制导致即便联网获取了相应的参数,但是相应的RecyclerView的Adapter却还未来得及新建(?个人猜测,菜鸟阶段)。解决的办法很简单:

vp_news.setOffscreenPageLimit(fragments.size());//即设置最大页数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐