2011-10-21 33 views
2

我正在寻找关于如何模块化我的代码的指导。我有一个活动和一个listAdapter,他们变得相当复杂。我不确定哪些代码应该在哪里以及在这两个类中彼此应该具有多少知识。您如何决定是否将代码放入活动或其适配器中?你用什么模式让这些课程尽可能精益?这个代码应该在哪里 - 在我的Activity或我的适配器中?

回答

2

你的描述过于笼统,所以我不能给你一个确切的答案(对于解释为什么他们变得越来越大,额外的代码有什么好处)。

但是一般来说,只要想想每个班级应该做什么。 “活动”(就像我看到的那样)是一个主控制器,它“知道所有人”,并且将其他组件(ListView与列表适配器)连接在一起。列表适配器的目的仅仅是将数据映射到视图。如果他们变得越来越大,提取新的(实用)类。例如,假设ListAdapter格式时间戳中的很大一部分代码(例如,将时间戳记作为长整型值,并基于当前时间创建一个像“2小时前”的字符串)。然后创建一个名为TimeFormat的新实用程序类(带有一个构造函数,它需要一个上下文,稍后需要它来获取字符串资源)是有意义的。然后ListAdapter将创建这个类的一个实例。

另一个例子是数据保存。在这种情况下,您可以创建一个名为“Model”或“Document”的类(再次,构造函数采用“Context”实例)。它将负责(例如)通过parsin XML文件加载数据,并通过生成XML文件来保存数据。在这种情况下,这个类将被活动实例化。

另请注意,ListAdapter应该真的做它应该做的事情:基于数据创建/设置视图。它不应该依赖于其他视图(在其他视图中,它应该可以在任何布局文件中使用任何ListView)。因此,如果您有“findViewById”调用,该调用访问ListView(或ListView本身)之外的视图,那么应将该代码移至该活动。另外,如果有疑问,你可以尝试找到一个相对成熟的开源应用程序,并做类似的事情(并且看看它是如何解决问题的)。

1

adapater documentation在机器人

适配器对象充当一个AdapterView和该视图的基础数据之间的桥梁。适配器提供对数据项的访问。适配器还负责为数据集中的每个项目制作视图。

因此,如果您的代码与获取数据来显示或创建视图有关,那么它就在适配器中。一切都在活动或其他地方。如果您花费大量代码检索要显示的信息,请考虑使用某种AsyncTaskLoader类。请注意,使用android compatibility package可以从小于3.0的API级别访问加载器类。

相关问题