安卓,Fragment加载不同适配器

KingfarOu 2016-08-18 12:02:52
需求如下:我有一个"Fragment",对应布局文件只有"ListView",另外我有多个针对该"ListView"写的适配器,但是这个"ListView"具体使用哪个适配器,由调用"Fragment"的"Activity"来决定。问:该如何封装这个"Fragment",才能根据传进来的适配器的类名决定创建哪个?一定要用反射加载适配器么?如果要,该怎么写,如果不要,其他方法是怎样的?
...全文
442 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
mimixi666 2016-08-19
  • 打赏
  • 举报
回复
引用 2 楼 u010707039 的回复:
[quote=引用 1 楼 mimixi666 的回复:] 1.你在创建fragment的时候,从activity传参数过去给fragment, 2.然后根据参数加载不同的适配器不就行了吗? 3.还是说我理解错你的意思?
没理解错,是我说的不够详细,理论上你这样可行,现在项目的需求是该"Fragment"可能加载四个不同的适配器,那我就要写出四个if()else{},那么如果以后需求变了,他要可能加载十个,难道我要写出十个if()else{}[/quote] 嗯嗯,明白了,用反射确实可以。 如果嫌弃反射效率低,你可以用map装起来,然后在创建fragment的时候,从activity传参数过去给fragment,再加载接口或者抽象适配器就可以了。 它比反射就是多了1个容器维护的步骤而已。
KingfarOu 2016-08-19
  • 打赏
  • 举报
回复
引用 6 楼 xlyhr007 的回复:
在对应的activity发送广播或eventbus,在每个activity中放一个静态的Adapter,相应activity做加载fragment操作时,把自己传进一个全局的Activity对象,fragment更新数据直接用全局Activity对象.Adapter
这个没有太听明白,可不可以说得细些,谢谢
xlyhr007 2016-08-18
  • 打赏
  • 举报
回复
引用 6楼xlyhr007 的回复:
在对应的activity发送广播或eventbus,在每个activity中放一个静态的Adapter,相应activity做加载fragment操作时,把自己传进一个全局的Activity对象,fragment更新数据直接用全局Activity对象.Adapter
广播,eventbus,全局对象是三个方法,相互无关
xlyhr007 2016-08-18
  • 打赏
  • 举报
回复
在对应的activity发送广播或eventbus,在每个activity中放一个静态的Adapter,相应activity做加载fragment操作时,把自己传进一个全局的Activity对象,fragment更新数据直接用全局Activity对象.Adapter
Stanny_Bing 2016-08-18
  • 打赏
  • 举报
回复
正解,传参数,有多少就if else多少,哪怕你有一百个界面要用呀
moonFY 2016-08-18
  • 打赏
  • 举报
回复
引用 3 楼 ink_s 的回复:
[quote=引用 2 楼 u010707039 的回复:] [quote=引用 1 楼 mimixi666 的回复:] 1.你在创建fragment的时候,从activity传参数过去给fragment, 2.然后根据参数加载不同的适配器不就行了吗? 3.还是说我理解错你的意思?
没理解错,是我说的不够详细,理论上你这样可行,现在项目的需求是该"Fragment"可能加载四个不同的适配器,那我就要写出四个if()else{},那么如果以后需求变了,他要可能加载十个,难道我要写出十个if()else{}[/quote] 不 你还可以用 switch case [/quote] 哈哈,看了楼上刚想说
ink_s 2016-08-18
  • 打赏
  • 举报
回复
引用 2 楼 u010707039 的回复:
[quote=引用 1 楼 mimixi666 的回复:] 1.你在创建fragment的时候,从activity传参数过去给fragment, 2.然后根据参数加载不同的适配器不就行了吗? 3.还是说我理解错你的意思?
没理解错,是我说的不够详细,理论上你这样可行,现在项目的需求是该"Fragment"可能加载四个不同的适配器,那我就要写出四个if()else{},那么如果以后需求变了,他要可能加载十个,难道我要写出十个if()else{}[/quote] 不 你还可以用 switch case
KingfarOu 2016-08-18
  • 打赏
  • 举报
回复
引用 1 楼 mimixi666 的回复:
1.你在创建fragment的时候,从activity传参数过去给fragment, 2.然后根据参数加载不同的适配器不就行了吗? 3.还是说我理解错你的意思?
没理解错,是我说的不够详细,理论上你这样可行,现在项目的需求是该"Fragment"可能加载四个不同的适配器,那我就要写出四个if()else{},那么如果以后需求变了,他要可能加载十个,难道我要写出十个if()else{}
mimixi666 2016-08-18
  • 打赏
  • 举报
回复
1.你在创建fragment的时候,从activity传参数过去给fragment, 2.然后根据参数加载不同的适配器不就行了吗? 3.还是说我理解错你的意思?

80,490

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧