如果viewpager中放置的多个fragment都是一样的ui效果,区别仅仅就是显示的数据内容不一样,如何复用碎片
发布网友
发布时间:2022-05-04 11:46
我来回答
共1个回答
热心网友
时间:2023-10-22 11:49
Viewpager是我们经常使用的一个控件,它的使用这里就不多说了,我在这里说一下其中的一个效果,就是我们经常会看到在一些新闻类的 App中,使用viewpager来做各个频道的切换,在切换的时候,我们会发现,这些频道里面的数据,是在此频道为当前页的时候才进行加载,而不是一开始就加载的(这里说明一点,就是viewpager有预加载的功能),同时,当我们切换回来的时候,此页面并没有重新加载,数据还是原来的,就是说当切换回来的时候,数据没有进行再次请求。
对于这个效果,我用了一个比较笨,也是我现在唯一能想到的方法,来处理,在这里,做一个记录,如果你有好的方法,希望留言,大家共同进步。
好了,下面我说一下我的方法:
我们在使用viewpager的时候,最后都要使用一个setAdapter来绑定它的adpter。对于viewpager来说,它的最基本的adapter是pageAdapter。但是还有两个分别是FragmentPagerAdapter与FragmentStatePagerAdapter这两个从名字上就能看出来,主要是用来处理viewpager中如果是多个fragment的情况。它俩的区别在于是否将生成的fragment全放到内存中去。FragmentPagerAdapter是将fragment放到内存中去,而FragmentStatePagerAdapter则只保留当前的fragment。这里我们采用的是继承FragmentStatePagerAdapter来处理,它只需要完成两上方法就OK了