Android FragmentPagerAdapter 更新数据

在使用ViewPager+FragmentPagerAdapter时候,更新Fragment里数据是不起作用,FragmentPagerAdapter添加或减少Fragment时,前面的Fragment内容更新不起作用等等问题,有的做法是暴力删除fragment列表,如

List<Fragment> fragments = getSupportFragmentManager().getFragments();
for (int i = fragments.size() - 1; i >= 0; i--) {
    getSupportFragmentManager().beginTransaction().remove(fragments.get(0));
}

也有做法是重写FragmentPagerAdapter的instantiateItem(ViewGroup container, int position)方法等等,有效虽有效,但比较粗爆。

FragmentPagerAdapter.getItem(int position)在更新时候不一定会被调用,所以Fragment更新是无效,来看看FragmentPagerAdapter的父类PagerAdapter中的代码instantiateItem

FragmentPagerAdapter里在根据getItemId(int position)来判断当前position里Fragment是否存在,如果存在,则不会创建亦不会更新,那么要让FragmentPagerAdapter的更新生效,那在getItemId(int)里根据数据返回一个唯一的数据ID,当FragmentPagerAdapter更新时,数据ID改变了,那么Fragment就会调用getItem(int)去获取新Fragment,达到更新效果

@Override
public long getItemId(int position) {
    // 获取当前数据的hashCode
    int hashCode = mData.get(position).hashCode();
    return hashCode;
}
时间: 2025-01-14 08:13:47

Android FragmentPagerAdapter 更新数据的相关文章

Android ViewPager更新数据

ViewPager也是一个常用的组件 与ListView类似 当绑定数据后 想刷新数据 需要在适配器中添加如下方法 protected PagerAdapter galleryAdapter = new PagerAdapter() { @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == ((View)arg1); } @Override public int getCount()

Android ListView动态更新数据

ListView就是可以显示一行行Item的控件,有时候数据非常多,通常需要分页显示,但为了减少用户的输入,我们可以动态更新ListView,把下一页要显示的数据的添加到当前ListView中. 先看看效果: 需要注意的是在什么时候去更新数据 ,listVIew的setOnScrollListener监听是否滚到了最后一条记录, 取到的数据加到list中,最后记得调用adapter的notifyDataSetChanged,通知listview改变. 不废话,上代码. 主文件: mport ja

Android定时器,更新数据

做个笔记,Android中常用的定时器,用于定时更新ui数据等. 1.Handler + Runnable定时器 private Handler mHandler; private Runnable mRunnable; mHandler = new Handler(); mRunnable = new Runnable() { public void run () { //更新数据的方法 update(); } }; //定时启动线程(执行的线程,时间毫秒) mHandler.postDela

Android——Listview不用notifydatasetchanged更新数据的方法

一.介绍 先来介绍一下listview更新数据的几种方法,目前我知道的方法有如下几种: 1. 每次更新数据时都调用listview.setadapter(); 2. 每次更新数据时都调用adapter.notifydatasetchanged(): 3. 在自定义的adapter里添加更新函数update; 博客撰写人:It一zhai男 转载请标明地址:http://blog.csdn.net/u013293125/article/details/52858396 这里,我们将会一个一个来介绍,

Android数据库更新并保留原来数据的实现

Android应用程序更新的时候如果数据库修改了字段需要更新数据库,并且保留原来的数据库数据: 这是原有的数据库表 CREATE_BOOK = "create table book(bookId integer primarykey,bookName text);"; 然后我们增加一个字段: CREATE_BOOK = "create table book(bookId integer primarykey,bookName text,bookContent text);&q

FragmentPageAdapter切换时无法更新数据问题解析

在一个 Android 应用中,我们可以使用 FragmentPageAdapter 来处理多 Fragment 页面的横向滑动.但是当 Fragment 对应的数据集发生改变时,我们都希望能够通过调用 mAdapter.notifyDataSetChanged() 来触发 Fragment 页面使用新的数据调整或重新生成其内容,可是当我们使用 notifyDataSetChanged() 后,我们会发现这个方法不会生效.那为什么会这样呢,之前遇到了相同的问题一直没法解决,在网上给出的乱七八糟的

Android中XML数据解析

转载请注明出处:http://blog.csdn.net/yegongheng/article/details/38296207 XML初步 今天我们来学习另一种非常重要的数据交换格式-XML.XML(Extensible Markup Language的缩写,意为可扩展的标记语言),它是一种元标记语言,即定义了用于定义其他特定领域有关语义的.结构化的标记语言,这些标记语言将文档分成许多部件并对这些部件加以标识.XML 文档定义方式有:文档类型定义(DTD)和XML Schema.DTD定义了文

Android Learning:数据存储方案归纳与总结

前言 最近在学习<第一行android代码>和<疯狂android讲义>,我的感触是Android应用的本质其实就是数据的处理,包括数据的接收,存储,处理以及显示,我想针对这几环分别写一篇博客,记得我的学习心得,也希望跟各位新手同学相互努力促进.今天这篇博客,我想介绍一下数据的存储,因为数据的接收,存储,处理以及显示这几环环环相扣,而数据的存储直接关系到数据的处理和显示,所以显得尤为重要. 所以本文针对数据存储的常见方案和其使用进行了归纳.分为程序内存储和程序间数据访问,程序内存储

Android笔记(四十三) Android中的数据存储——SQLite(五)delete

SQLite通过delete()方法删除数据 delete()方法参数说明: delete()方法参数 对应sql部分 描述 table delte from table_name 要删除的表 whereClause where column 删除条件 whereArgs where column=? 删除条件的参数 看代码: MainActivity.java package cn.lixyz.sqlite; import android.app.Activity; import androi