Android MVP-Architecture如何使用SQLiteHelper在模型中进行数据库调用

Man*_*oxx 2 architecture mvp android

我目前正在开发Android应用程序,我选择了MVP-Arhitecture.我的问题是现在,我需要从模型中的数据库中读取和写入一些东西,但是因此你需要一个对Context的引用,它在View中.我想知道,如何在不破坏MVP架构的情况下从View到模型获取Context(如果可能的话).

谢谢!!!

Blu*_*ell 8

有必要创建模型和演示者,即:

 new MyModel();
 new Presenter();
Run Code Online (Sandbox Code Playgroud)

通常这是活动

 @Override
 public void onCreate(Bundle savedState) {
      Model model = new MyModel();
      Presenter presenter = new Presenter(model, this); // this being the View
 }
Run Code Online (Sandbox Code Playgroud)

如果您在模型中使用数据库,则希望使用依赖项来执行此操作,可能需要调用 DatabaseReader

 @Override
 public void onCreate(Bundle savedState) {
      DatabaseReader db = new DatabaseReader(this); // this being context
      Model model = new MyModel(db);
      Presenter presenter = new Presenter(model, this); // this being the View
 }
Run Code Online (Sandbox Code Playgroud)

现在你有一个被调用的类DatabaseReader,Context它通过构造函数传递给它,所以你可以做"数据库事物",这个类本身就被模型使用了.

 public class DatabaseReader {

     private final Context context;


     public DatabaseReader(Context context) {
         this.context = context;
     }
 }
Run Code Online (Sandbox Code Playgroud)

 public class MyModel implements Model {

     private final DatabaseReader db;

     public MyModel(DatabaseReader db) {
         this.db = db;
     }


 }
Run Code Online (Sandbox Code Playgroud)

  • 这就是MVC。MVP 不应从视图中引用模型 (2认同)