0

我有一个使用 MVP 设计的应用程序实现,我想使用 SQLlite 数据库将数据数据源到 UI View。我不想/不需要使用 a ContentProvider,因为只有我的应用程序才需要数据。

我知道View应该是“愚蠢的”,任何“业务”逻辑都应该放在PresenterModel. 然而Presenter,为了允许独立的单元测试,应该不包含 Android 代码。

那么我如何执行 SQLite 数据从Model后面到的传输,Presenter然后View如果我不能在中使用 acursorPresenter

我可以使用回调,但创建自己的数据结构、将数据加载到其中然后在回调中传递列表的“正确”方式是什么?

我想忠于MVP设计。我已经在谷歌上搜索到了这个,虽然有很多东西可以处理ContextPresenter但使用其他 Android 数据结构的内容并不多。

4

1 回答 1

0

即使在演示者中,您也不应该在视图中拥有 SQLite 访问权限。

所有对模型的访问都是在模型层中进行的,因此如果您需要从视图/演示者与该光标进行交互,您将必须创建方法来调用它:

从 View 调用 Presenter 方法 -> 从 Presenter 调用模型方法 -> 从模型调用其光标交互方法。

反之亦然。

所以......你需要的应该是这样的:

View 通知一些需要一些数据的 Presenter 方法(presenter.loadInfo(...))-> Presenter 调用模型(UseCase,模型类等)[model.loadData(...)] -> 模型有数据库的属性或网关,因此它要求查询,一旦获得信息,它就会返回给演示者。

它应该是异步的,所以创建一个回调并从演示者调用它:

model.loadInfo(..., new onResponseCallback() {

method onResponse(MyResponseClass response) {

//Manage your response as you want
view.showData(...)

}

method onFailure(MyFailureClass failure) {
view.showFailure...
} 
});
于 2017-10-19T10:18:16.123 回答