我有Sqliteopenhelper,并拥有准备好的代码的所有组件。问题是它是非常好的设计,允许任何活动都可以直接访问主数据库类中的公共方法。

我有一个情况,即我的活动将根据它从数据库获取的信息 - 基本上在运行时动态创建的信息,以其的情况将在其布局中填充信息。由于我将从数据库中有多行回来,这意味着我将有一系列我需要获得所有信息。

所以这样的东西:

 //in Main Activity Class
 private class menuItems{

    String category_name;
    int category_id;
    int menuItem_id;
    String menu_title;
    String menu_desc;
    String price;
    int icon;
}

  //ArrayList in Main Activity
   ArrayList<menuItems> menu = new ArrayList<menuItems>();
.

我的活动需要这个“struct”作为自己的“结构” - 以便它可以从数据库中收到信息 - 类似于getAllMenuItems()的信息, - 如果此方法执行Select语句,则将信息放在一起是它自己的“结构”并将其返回主要活动。然后在活动中使用此信息来构建布局/视图等。

如果我最终有一个Mediator类来与数据库交谈那么那个类也需要在其中定义相同的“struct”。有更好的设计是有类似的东西:

主动力

databaseaccessor - 呼叫公共数据库霍尔类(每个来自捕获行的请求)

databasehelper(子类Sqliteopenhelper,执行所有数据库查询)

我想沿着MVC线(模型 - 视图 - 控制器)设计一些东西,但我想知道你们在Android应用程序中考虑了这一点的实用性。

谢谢!

有帮助吗?

解决方案

一般来说,使活动和数据库尽可能彼此分离是个好主意。这允许您能够通过创建类来访问数据来更改数据源,无需更改您用于呈现数据的代码。

所以,是的,我绝对会有一个单独的类来访问数据,以及一个单独的类,以允许将数据传递给活动。在这种情况下,我还将遵循demeter的法律,并提供访问或更改底层数据所需的任何功能,而无需实际提供对基础数据库的访问。

其他提示

结论 - 认为具有与GUI分开的数据库是一个智能移动,以防我想再次使用任何其他活动使用DB类。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top