ViewPager+TabLayout+Fragment刷新Fragment中的数据

摘要:
列表);5((WorkSubFirstFragment)对象).updateView(list0);12} 13returnsuper.getItemPosition(对象);行){2reflashSelfData(行);2list0.addAll(列表);

1.ViewPager与TabLayout的初始化:

1 private void initData() {
2         mTabFragmentAdapter = new TabFragmentFirstAdapter(getSupportFragmentManager(), mDeptType);
3         mVp.setAdapter(mTabFragmentAdapter);
4         mVp.addOnPageChangeListener(
5                 new TabLayout.TabLayoutOnPageChangeListener(mTabLayout));
6         mVp.setOffscreenPageLimit(3);
7         mTabLayout.setupWithViewPager(mVp);
8 }

2.刷新主要还是靠FragmentPagerAdapter的notifyDataSetChanged()

1 private void reflashData(int type, List<WorkOrderBean.RowsBean> list) {
2         mTabFragmentAdapter.setDataAndType(type, list);
3         mTabFragmentAdapter.notifyDataSetChanged();
4 }

3.当notify时,FragmentPagerAdapter中主要会回调getItemPosition(Object object)方法,在这里判断是哪个Fragment

 1   @Override
 2     public int getItemPosition(Object object) {
 3         if (object instanceof WorkSubFirstFragment) {
 4             if (list0.size()==0)return super.getItemPosition(object);
 5             ((WorkSubFirstFragment) object).updateView(list0);
 6         } else if (object instanceof WorkSubFirstFragment1) {
 7             if (list1.size()==0)return super.getItemPosition(object);
 8             ((WorkSubFirstFragment1) object).updateView(list1);
 9         } else if (object instanceof WorkSubFirstFragment2) {
10             if (list2.size()==0)return super.getItemPosition(object);
11             ((WorkSubFirstFragment2) object).updateView(list2);
12         }
13         return super.getItemPosition(object);
14     }

4.定义Fragment中的更新视图方法:

1 public void updateView(List<WorkOrderBean.RowsBean> rows) {
2         reflashSelfData(rows);
3 }
小贴士:
    添加数据时不要直接赋值,采用addList()方法最好,并且之前最好清空数据集
1 list0.clear();
2 list0.addAll(list);

免责声明:文章转载自《ViewPager+TabLayout+Fragment刷新Fragment中的数据》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ucGUI的视窗管理回调机制学习关于Extjs_gridpanel设置autoHeighttrue时横向滚动条的问题下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Java之"Mozilla Rhino"引擎(二)

在Java中使用Rhino, 能让你使用类似Groovy, ECMAScript...等等之类的不同动态脚本语言, 其中值得推荐的是ECMAScript, 它是Rhino的默认实现, 同时也在JDK1.6中集成了.使用ScriptEngine的时候, 还有二个接口, 看似不相关, 却是非常有用. 一个是Invocable, 一个是Compilable, 前...

微信小程序前端与myeclipse的数据交换过程(SSH)

这是我个人探究微信小程序前端与后端之间的数据交换的过程,再结合个人所学的SSH框架, 编程工具用myEclipse2014工具。当然,前提是后台的项目要部署到tomcat服务器上才行, 然后总结了从后台获取数据和从前端读取数据存放到数据库的两个过程, 大家可以参考、学习一下,看代码: 首先,在微信小程序的界面中,先设两个按钮:如下图所示: 代码如下: &...

Corona SDK新手教程:tap、touch和multitouch的区别

本教程主要讲解一下tap、touch和multitouch的区别,以及如何处理每种方式。 如果是新手的话,可以先复习一下之前的文章 CoronaSDK之交互系统和事件检测 1 Tap检测 Tap事件是用户和触屏之间交互最基础的一种。本质上来说,一个tap就是表示用户用手指接触到屏幕,然后在差不多附近的位置再抬起的过程。这个tap事件只有在用户在同一个点接触...

iOS—静态方法(类方法)和实例方法

1.实例方法/动态方法     a).标识符:-     b).调用方式:(实例对象    函数)     c).实例方法在堆栈上。 2.静态方法/类方法     a).标识符:+     b).调用方式:(类    函数)     c).静态方法在堆上分配内存。 3.静态方法和实例方法的区分      a).静态方法常驻内存,实例方法不是,所以静态方法效...

QtDbus的API及示例

目录 1. Client :: Method Call 1.1. 方法1: 直接使用 Message 传递消息(Low-Level-API) 1.2. 方法2: 通过 DBusInterface 调用方法(同步+异步) 1.3. 方法3: 从XML导入代理类 2. Subscriber :: Signal Catching 2.1. 方法1:...

Laravel模型事件的实现原理详解

模型事件在 Laravel 的世界中,你对 Eloquent 大多数操作都会或多或少的触发一些模型事件,下面这篇文章主要给大家介绍了关于Laravel模型事件的实现原理,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴。 前言 Laravel的ORM模型在一些特定的情况下,会触发一系列的事件,目前支持的事件有这些:creating, created,...