«

Android Viewpager动态删除Fragment解析

时间:2024-3-2 17:28     作者:韩俊     分类: Android


转自:http://www.desteps.com/mobile/android/0101093.html

Android Viewpager动态添加、动态删除Fragment解析。android viewpager、viewpager动态添加、viewpager动态删除。

viewpager嵌套fragment是一个比较帅气的使用,但是问题多多,毕竟没怎么用过。之前viewpager的使用顶多是在应用开始的介绍页,viewpager内嵌几张介绍图片,其实这个使用是比较常规的;假如嵌套布局搞的复杂点,如自定义view/fragment,那么就要考虑下布局资源的分发情况了,而不是简单的对Adapter或者pager进行clear、removeAllViews。

拿自己的项目使用情况来说,开始以为viewpager的页数是定的,但最后才知道是动态改变的,不仅可以增加,还要动态的删除!!!这个实时动作真的很折腾,增加是没有问题的,但是减少却不如我们所愿,总是有残留的布局在占着位子,挥之不去,无论你怎么clear、remove都于是无补,因为我不懂它的实现机制,so,真心被动。折腾了好几天,终于在stackoverflow上找到了问题的根源,结合自己项目实际情况解决了自己的问题。

所以说:软件开发有两种东西是不可或缺的:1.勇于尝试;2.良好的英文阅读能力!!

项目使用情况:viewpager+FragmentPagerAdapter+fragment,交互逻辑放置在fragment中;

1、主activity中的动态动态增删逻辑,因为涉及到动态 刷新,所以在每次动态添加之前要先将其清空一下

以下为引用内容:
layout.removeAllViews();//涉及到实时刷新,所以要将之前的布局清空掉。
homePager.removeAllViewsInLayout();//removeAllViews();//赋值之前先将Adapter中的
homepageFragments.clear();
if(hotIssuesList != null && hotIssuesList.size()>0) {
    describeArr = new String[hotIssuesList.size()];
    solutionArr = new String[hotIssuesList.size()];
    for(int i = 0; i < hotIssuesList.size(); i++) {//hotIssuesList.size()
describeArr[i] = hotIssuesList.get(i).getHotDescirbe();//提取对应pager数据源。
solutionArr[i] = hotIssuesList.get(i).getHotSolution();
img = new ImageView(this);//准备5个小图标。
img.setScaleType(ScaleType.FIT_XY);
img.setImageResource(img_ID);
imgsList.add(img);
img.setPadding(6, 3, 6, 3);
layout.addView(img, params);
//colourFragment = new ColourFragment(hotIssuesList.get(i));
//homepageFragments.add(colourFragment);
//homePage2Fragment = new HomePage2Fragment(this, i, hotIssuesList.get(i));
homePage2Fragment = HomePage2Fragment.getInstance(hotIssuesList.get(i));
//homePage2Fragment = new HomePage2Fragment(this, i, new String[]{describeArr[i], solutionArr[i]});
homepageFragments.add(homePage2Fragment);
//viewpagerItemView = new ViewPagerItemView(this, i, new String[]{describeArr[i], solutionArr[i]});
//homepageViews.add(viewpagerItemView);
    }   
    //custom-viewpager
//  MyHomePagerAdapter myAdapter = new MyHomePagerAdapter(this, homepageViews, describeArr, solutionArr);
    HomePageAdapter adapter = new HomePageAdapter(this, getSupportFragmentManager(), homepageFragments);
    homePager.setAdapter(adapter);  
    //wrapper-viewpager-
//  HomePageAdapter adapter = new HomePageAdapter(this, getSupportFragmentManager(), hotIssuesList);
//  PagerAdapter wrappedAdapter = new InfinitePagerAdapter(adapter);
//  homePager.setAdapter(wrappedAdapter);

    homePager.setCurrentItem(0);
    imgsList.get(0).setImageResource(img_ID_ov);
    homePager.setOnPageChangeListener(new PageListener());
} 


标签: android

热门推荐