Android Viewpager动态删除Fragment解析

来源:互联网 发布:枪战王者刷钻石软件 编辑:程序博客网 时间:2024/05/04 00:13

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());} 


0 0
原创粉丝点击