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

时间:2016-04-27 19:18:43

标签: android architecture mvp

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

THX !!!

1 个答案:

答案 0 :(得分:8)

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

 new MyModel();
 new Presenter();

通常这是活动

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

如果您在模型中使用数据库,则希望使用依赖关系来执行此操作,可能称为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
 }

现在你有一个名为DatabaseReader的类,它通过构造函数传递给它Context,所以你可以做“数据库事物”,这个类本身也被模型使用。

 public class DatabaseReader {

     private final Context context;


     public DatabaseReader(Context context) {
         this.context = context;
     }
 }

 public class MyModel implements Model {

     private final DatabaseReader db;

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


 }