国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

ViewPager 和Fragment 的一點點交互心得

2019-11-07 23:58:32
字體:
供稿:網(wǎng)友

這幾天在寫viewpager 和fragment 的 一個組合,出現(xiàn)在當(dāng)前頁面的時候,setCurrentItem() 的方法沒有起到什么作用。 這是因為 ViewPager 的緩存原因,所以只能另辟他徑。在 adapger 中用集合來保存每一個 Fragment 的對象,用到的時候直接從中取出來

public class PagerFragmentAdapter extends FragmentStatePagerAdapter { PRivate FragmentManager fm; private Map<String,Fragment> mFragments = new HashMap(); private List<String> mStrings = new ArrayList<>(); FragmentView fv; public PagerFragmentAdapter(FragmentManager fm, List<String> mStrings) { super(fm); this.fm = fm; this.mStrings = mStrings; } @Override public Fragment getItem(int position) { FragmentView fv = FragmentView.newInstance(mStrings.get(position)); mFragments.put(String.valueOf(position),fv); return fv; } @Override public int getCount() { return mStrings.size(); } /** * 取出當(dāng)前顯示的Fragment * @param positon 當(dāng)前的位置 * @return */ public Fragment getCurrentFragment(int positon){ return mFragments.get(String.valueOf(positon)); }}

這樣在Activity 中就拿到了當(dāng)前顯示的Fragment ,可以直接調(diào)用Fragment 中寫好的更新方法,更新Fragment 中的數(shù)據(jù)

int position = mViewPager.getCurrentItem();FragmentView fv =(FragmentView) mPagerFragmentAdapter.getCurrentFragment(positon);fv.xxxx();

這樣可以忽略ViewPager 的postion 和選中的position 一致不能即時更新Fragment 中的數(shù)據(jù). 也可以判斷一下數(shù)據(jù)

//其他的可以根據(jù)這個繼續(xù)寫 if (viewPager.getCurrentItem() == 0) { //當(dāng)前頁 int position = mViewPager.getCurrentItem(); FragmentView fv = (FragmentView)mPagerFragmentAdapter.getCurrentFragment(positon); fv.updateView(); //后一頁 fv = (FragmentView)mPagerFragmentAdapter.getCurrentFragment(positon+1); v.updateView(); }

這樣就可以都即時刷新數(shù)據(jù)。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 贡觉县| 化德县| 昭苏县| 唐河县| 衢州市| 洪洞县| 惠水县| 岢岚县| 邹平县| 唐河县| 迁安市| 洪江市| 镇远县| 句容市| 恩施市| 钟祥市| 胶州市| 凌海市| 米脂县| 灵璧县| 安龙县| 山阴县| 大丰市| 平凉市| 雅安市| 九龙城区| 乌兰察布市| 黔东| 虞城县| 涡阳县| 永新县| 泰州市| 天镇县| 潞城市| 凯里市| 尚志市| 腾冲县| 白朗县| 台南市| 邛崃市| 金塔县|