zoukankan      html  css  js  c++  java
  • FragmentPagerAdapter 刷新

    在fragmentpageadapter的instantiateItem方法里,首先设置此Fragment的标记,然后从FragmentManager中的mAdded集合里面去查找有没有相关标记的fragment如果有就直接从集合中获取使用如果没有才会触发fragmentpageadapter的getItem方法获取一个fragment。所以更新adapter数据是没有作用的

    String name = makeFragmentName(container.getId(), itemId);   //设置fragment标记  
            Fragment fragment = mFragmentManager.findFragmentByTag(name); //从mAdded中查找  
            if (fragment != null) {  
                if (DEBUG) Log.v(TAG, "Attaching item #" + itemId + ": f=" + fragment);  
                mCurTransaction.attach(fragment);  
            } else {  
                fragment = getItem(position);  
                if (DEBUG) Log.v(TAG, "Adding item #" + itemId + ": f=" + fragment);  
                mCurTransaction.add(container.getId(), fragment,  
                        makeFragmentName(container.getId(), itemId));  
            }  

    解决思路:

    1,重新创建新类继承继承PagerAdapter,创建集合mFragments
    2,将新创建的Fragment的添加到mFragments集合中
    3,在数据变化(notifyDataSetChanged)的时候,将mFragments集合清空,在instantiateItem函数里面判断有无缓存的时候加mFragments判断

    String name = makeFragmentName(container.getId(), itemId);  
    Fragment fragment = mFragmentManager.findFragmentByTag(name);  
    if (fragment != null && mFragments != null && mFragments.containsKey(position)) {  
        if (DEBUG) android.util.Log.v(TAG, "Attaching item #" + itemId + ": f=" + fragment);  
        mCurTransaction.attach(fragment);  
    } else {  
        try {  
            if (fragment != null) {  
                mCurTransaction.remove(fragment);  
            }  
            fragment = getItem(position);  
            if (DEBUG) Log.v(TAG, "Adding item #" + itemId + ": f=" + fragment);  
            mCurTransaction.add(container.getId(), fragment,  
                    makeFragmentName(container.getId(), itemId));  
            mFragments.put(position, fragment);  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
    

      

    代码下载:http://download.csdn.net/detail/xueqiang911226/9683426

  • 相关阅读:
    Make something people want
    POJ 3662 Telephone Lines (二分+Dijkstra)
    POJ 2010 Moo University
    HDU 6627 2017ACM/ICPC亚洲区域赛沈阳站 Rabbits
    HDU 6625 2017ACM/ICPC亚洲区域赛沈阳站 Little Boxes(高精度整数加法)
    Codeforces 877D Olya and Energy Drinks(BFS+剪枝)
    CodeForces 876B Divisiblity of Differences (数学水题)
    POJ 2139 Six Degrees of Cowvin Bacon (Floyd最短路)
    UESTC 1057 秋实大哥与花 (线段树)
    Linux安装Oh-my-zsh
  • 原文地址:https://www.cnblogs.com/xueqiang911226/p/6065771.html
Copyright © 2011-2022 走看看