我正在寻找关于如何模块化我的代码的指导。我有一个activity和一个listAdapter,它们变得非常复杂。我不确定哪些代码应该存在于何处,以及这两个类中的每个类应该对彼此有多少了解。如何决定是将代码放入活动中还是放入其适配器中?您使用什么模式来尽可能地保持这些类的精简?
发布于 2011-10-22 06:36:01
你的描述太笼统了,所以我不能给你一个确切的答案(这将有助于解释为什么它们越来越大,额外的代码有什么好处)。
但一般而言,只需考虑每个类应该做什么。"Activity“(在我看来)是一个主控制器,它”认识所有人“,它将其他组件连接在一起(带有list适配器的ListView )。列表适配器的目的只是将数据映射到视图。如果它们越来越大,提取新的(实用程序)类。
例如,假设大部分代码采用ListAdapter格式的时间戳(例如,将时间戳作为长值,并根据当前时间创建一个字符串,如"2小时前“)。然后,创建一个名为TimeFormat的新实用程序类是有意义的(使用一个接受上下文的构造函数,稍后需要它来获取字符串资源)。然后,ListAdapter将创建此类的一个实例。
另一个例子是数据保存。在这种情况下,您可以创建一个名为"Model“或"Document”的类(同样使用一个带有"Context“实例的构造函数)。它将负责(例如)通过解析XML文件加载数据,并通过生成XML文件来保存数据。在这种情况下,这个类将由活动实例化。
还要注意,ListAdapter实际上应该做它应该做的事情:创建/设置基于数据的视图。它永远不应该依赖于其他视图(在其他视图中,它应该与任何布局文件中的任何ListView一起工作)。因此,如果您有"findViewById“调用,该调用访问ListView (或ListView本身)外部视图,则应该将代码移动到活动中。
此外,如果您有疑问,可以尝试找到一个相对成熟的开源应用程序,它可以做一些类似的事情(看看这是如何解决问题的)。
发布于 2011-10-22 06:34:48
根据安卓系统中的adapater documentation
适配器对象充当AdapterView和该视图的底层数据之间的桥梁。Adapter提供对数据项的访问。Adapter还负责为数据集中的每个项目创建一个视图。
因此,如果您的代码与获取要显示的数据或创建视图有关,那么它将进入适配器。其他所有内容都放在活动中或其他地方。如果要花费大量代码来检索要显示的信息,请考虑使用某种AsyncTaskLoader类。请注意,可以使用android compatibility package从低于3.0的API层访问加载器类。
https://stackoverflow.com/questions/7855779
复制相似问题