我正在寻找关于如何模块化我的代码的指导。我有一个活动和一个listAdapter,他们变得相当复杂。我不确定哪些代码应该在哪里以及在这两个类中彼此应该具有多少知识。您如何决定是否将代码放入活动或其适配器中?你用什么模式让这些课程尽可能精益?这个代码应该在哪里 - 在我的Activity或我的适配器中?
回答
你的描述过于笼统,所以我不能给你一个确切的答案(对于解释为什么他们变得越来越大,额外的代码有什么好处)。
但是一般来说,只要想想每个班级应该做什么。 “活动”(就像我看到的那样)是一个主控制器,它“知道所有人”,并且将其他组件(ListView与列表适配器)连接在一起。列表适配器的目的仅仅是将数据映射到视图。如果他们变得越来越大,提取新的(实用)类。例如,假设ListAdapter格式时间戳中的很大一部分代码(例如,将时间戳记作为长整型值,并基于当前时间创建一个像“2小时前”的字符串)。然后创建一个名为TimeFormat的新实用程序类(带有一个构造函数,它需要一个上下文,稍后需要它来获取字符串资源)是有意义的。然后ListAdapter将创建这个类的一个实例。
另一个例子是数据保存。在这种情况下,您可以创建一个名为“Model”或“Document”的类(再次,构造函数采用“Context”实例)。它将负责(例如)通过parsin XML文件加载数据,并通过生成XML文件来保存数据。在这种情况下,这个类将被活动实例化。
另请注意,ListAdapter应该真的做它应该做的事情:基于数据创建/设置视图。它不应该依赖于其他视图(在其他视图中,它应该可以在任何布局文件中使用任何ListView)。因此,如果您有“findViewById”调用,该调用访问ListView(或ListView本身)之外的视图,那么应将该代码移至该活动。另外,如果有疑问,你可以尝试找到一个相对成熟的开源应用程序,并做类似的事情(并且看看它是如何解决问题的)。
适配器对象充当一个AdapterView和该视图的基础数据之间的桥梁。适配器提供对数据项的访问。适配器还负责为数据集中的每个项目制作视图。
因此,如果您的代码与获取数据来显示或创建视图有关,那么它就在适配器中。一切都在活动或其他地方。如果您花费大量代码检索要显示的信息,请考虑使用某种AsyncTaskLoader类。请注意,使用android compatibility package可以从小于3.0的API级别访问加载器类。
- 1. 我应该将我的代码放在Activity或View中吗?
- 2. 我应该在哪里放AutoLayout代码?
- 3. 我应该在哪里放置代码?
- 4. Mvc模式:我应该在哪里放置这个php代码?
- 5. 我应该在哪里放这个代码?
- 6. 我应该在哪里放这个JavaScript?
- 7. 我应该在哪里设置DataContext - 后面的代码或xaml?
- 8. 我应该在哪里将我的代码放在ActionBar.TabListener
- 9. 我在哪里出错这个代码
- 10. ListView没有得到更新,我应该在哪里调用notifyDataSetChanged(),我应该在哪里设置适配器?
- 11. 我应该在哪里设置我的代码上的listView?
- 12. 我应该在哪里放这段代码?
- 13. 我应该在哪里放置我的功能代码
- 14. 我应该在哪里放置我的JavaScript代码?
- 15. 我应该在哪里放置我的初始化代码?
- 16. 我应该在哪里设置这个配置?
- 17. 我应该在哪里存储我的underscore.js迭代器?
- 18. 我应该在哪里将这个库放在我的android应用程序中?
- 19. 我应该使用哪个适用于Ruby的CouchDB适配器?
- 20. 我应该在哪里把我的UpdatePanel
- 21. 我应该在哪里放验证码?
- 22. 我应该在哪里找到我在asp.net中的石英代码
- 23. 我应该在哪里将Google分析代码放在我的母版页中?
- 24. 我应该在cakephp 3中写我的模型代码在哪里?
- 25. 我应该在哪里将控制器代码放在angularjs应用程序中
- 26. 我应该如何在Rails中实现业务逻辑层?我应该在哪里放置这些代码?
- 27. Angular JS - 我的代码应该放在哪里?
- 28. 我的用户界面代码应该放在哪里?
- 29. 我在哪里放置这个计数器增量代码?
- 30. 在Oracle APEX接口中,我把这个代码放在哪里?