android – 在ViewPager中使用View或Fragment

前端之家收集整理的这篇文章主要介绍了android – 在ViewPager中使用View或Fragment前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个关于是否在ViewPager中使用View或Fragment的问题.

背景:
我有一个包含ListView的Activity A.每个ListView项打开活动B.活动B显示不同的内容,具体取决于在活动A中点击的ListView项.
活动B的内容显示在ListView中.

题:
现在,我不需要在活动A和B之间来回切换内容,而是要求实现水平视图滑动以在活动B内切换所有内容.
我找到的一个解决方案(尝试它并且它可以工作)是创建Activity B的ListView的许多实例,并将它与ViewPager PagerAdapter一起使用.
在doc上找到的另一个可能的解决方案(尚未尝试过)是将ListView引入Fragment,创建片段的许多实例并将其与ViewPager FragmentPagerAdapter或FragmentStatePagerAdapter一起使用.

我的问题是,使用每种方法有什么好处?我是否应该解决将ListView带入Fragment或只是简单地将ViewView与ViewPager一起使用的麻烦?

谢谢

解决方法

我想,当你想将一些UI业务逻辑绑定到特定的View(或一组)时,Fragment是一种有用的方法.如您所知,单个Fragment有自己的生命周期回调等等,就像Activity一样.

通过单个PagerAdapter使单个Activity托管许多ListView,而不是使用Fragment方法可能更干净,因为Fragment只需要处理驱动单个ListView的逻辑.

这与我刚刚面临的情况非常相似.我在ViewPager中显示各种垂直滚动形式(由许多输入字段组成).在我的情况下,我已经采用了Fragment方法,因为在我的情况下,ViewPager可能实际上需要在某些页面显示完全不同的视图.例如,在前几页中,可能会显示用户输入表单.但在最后一页上,将显示一个图表.需要一组完整的逻辑来驱动该图.从单个Activity中驱动那些输入表单和一个图表会有点混乱,我可能需要在几个委托类或其他东西中包含业务逻辑.所以对我来说,片段最终是明显的选择.我有我的InputFormFragment和GraphFragment,它们每个都只包含它们提供的视图的适用逻辑.

另一件需要考虑的事情是,在不久的将来,您也可能希望在ViewPager中显示不同类型的View.或者,您可能希望完全拥有另一个UI布局,也许是一个不使用ViewPager但是并排显示所有UI布局(例如,在横向模式下在大型平板电脑上使用的布局).使用Fragments,事情变得更加模块化,您可以将代码考虑在内,以便更快地完成此操作.另一方面,如果您通过使用包含简单的PagerAdapter和ListViews的所有逻辑的单个Activity来实现目标,您可能会发现将来需要更多工作来支持新类型的视图或特殊的平板电脑布局.

我要说的一件事是我自己通过FragmentPagerAdapter和FragmentStatePagerAdapter在ViewPager中实现了Fragments,如果你有任何特殊要求,事情会有点尴尬;管理碎片有时候会很棘手.例如,对于我的UI,我需要能够以编程方式添加删除包含片段的ViewPager.我还需要确保使用的适配器在显示后不会破坏碎片,因为我需要在某个时刻同时从所有碎片中收集数据.此外,我必须扩展和修改FragmentPagerAdatper,以确保Fragments正确地通过他们的onDestroy(),并在删除ViewPager时从FragmentManager中删除.

片段支持以非常模块化的方式构建用于各种屏幕大小和方向的UI,并且它们在如何允许您为各个UI元素封装业务逻辑和生命周期方面表现出色.但是,如果您的场景真的像ViewPager中的几个ListView一样简单,并且您知道您将永远不需要模块化,那么Fragments的开销可能会过度.

猜你在找的Android相关文章