2

我有来自 SQLite 数据库的数据,通常,我从数据库中获取一个项目并将其放入我的自定义数据类“发票”中,该类包含发票的所有详细信息。在发票中,我有返回诸如发票余额之类的业务逻辑(销售发票将返回发票的贷方,费用发票将返回发票的借方)以及其他会计特定的怪癖。

话虽如此,当我执行我的 SQL 查询并抓取一个游标时,将游标放入 SimpleCursorAdapter 并按我的方式处理它不起作用,因为嵌入到我的 Invoice 类中的业务逻辑被绕过了。我想我将不得不将每个光标结果转换为一个 Invoice 对象,然后以某种方式在 ListView 中列出这些对象。这是最优化的方式吗?或者,我应该打破约定并将逻辑编码到我的控制器中(类首先抓住光标)?

我想让事情尽可能容易理解。话虽这么说,我宁愿对这个问题采取“纯粹”的方法(例如,尽可能地在 MVC 范式中保持这个面向对象),而不是在控制器中将一些逻辑组合在一起来执行逻辑。

你怎么看?你会怎么办?一方面使用“纯粹主义”方法肯定会占用更多的处理能力,因为它不那么直接,但是,代码的可维护性和清晰度是否可以弥补这一点?

我很欣赏你的观点!

4

1 回答 1

1

...将光标放入 SimpleCursorAdapter 并按我的方式处理它不起作用,因为嵌入到我的 Invoice 类中的业务逻辑被绕过了。

如果你使用普通的SimpleCursorAdapter. 相反,您可以SimpleCursorAdapter在方法中扩展和实现您想要的任何逻辑bindView(),但我想您已经知道这一点(?!)。另一种选择是使用纯文本SimpleCursorAdapter并使用 aSimpleCursorAdapter.ViewBinder将数据绑定到您需要执行SimpleCursorAdapter无法处理的额外内容的地方。

这是最优化的方式吗?

可能不是。

你怎么看?你会怎么办?

如果您构建Invoice类(连同额外的东西)只是为了将其显示给用户(在 a 中ListView),那么我将放弃构建Invoice类并直接在等中实现任何逻辑AdapterViewBinder这可能不是“纯粹主义”方法,但我认为这是最有效的方法,特别是如果带有数据的游标将有数百行)。

如果您还要Invoce在代码的其他部分使用该类,那么我可能会首先从光标中提取数据。

于 2012-05-08T06:30:31.730 回答