Selaa lähdekoodia

初步集成model

詹子聪 5 vuotta sitten
vanhempi
commit
20282994db

+ 1 - 1
app/src/main/AndroidManifest.xml

@@ -9,7 +9,7 @@
         android:roundIcon="@mipmap/ic_launcher_round"
         android:supportsRtl="true"
         android:theme="@style/AppTheme">
-        <activity android:name=".MainActivity"
+        <activity android:name=".main.view.MainActivity"
             android:configChanges="orientation|screenSize|keyboardHidden">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />

+ 0 - 34
app/src/main/java/com/miekir/newmvp/TestBean2.java

@@ -1,34 +0,0 @@
-package com.miekir.newmvp;
-
-/**
- * Copyright (C), 2019-2020, Miekir
- *
- * @author Miekir
- * @date 2020/10/7 11:35
- * Description:
- */
-public class TestBean2 {
-    private int age;
-    private String name;
-
-    public TestBean2(int age, String name) {
-        this.age = age;
-        this.name = name;
-    }
-
-    public int getAge() {
-        return age;
-    }
-
-    public void setAge(int age) {
-        this.age = age;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-}

+ 0 - 13
app/src/main/java/com/miekir/newmvp/TestModel.java

@@ -1,13 +0,0 @@
-package com.miekir.newmvp;
-
-/**
- * Copyright (C), 2019-2020, Miekir
- *
- * @author Miekir
- * @date 2020/11/14 14:57
- * Description:
- */
-
-public class TestModel {
-
-}

+ 3 - 3
app/src/main/java/com/miekir/newmvp/TestBean1.java

@@ -1,4 +1,4 @@
-package com.miekir.newmvp;
+package com.miekir.newmvp.main.bean;
 
 /**
  * Copyright (C), 2019-2020, Miekir
@@ -7,11 +7,11 @@ package com.miekir.newmvp;
  * @date 2020/10/7 11:35
  * Description:
  */
-public class TestBean1 {
+public class MainBean {
     private int age;
     private String name;
 
-    public TestBean1(int age, String name) {
+    public MainBean(int age, String name) {
         this.age = age;
         this.name = name;
     }

+ 18 - 0
app/src/main/java/com/miekir/newmvp/main/model/IMainModel.java

@@ -0,0 +1,18 @@
+package com.miekir.newmvp.main.model;
+
+import com.miekir.newmvp.main.bean.MainBean;
+
+/**
+ * Copyright (C), 2019-2020, Miekir
+ *
+ * @author Miekir
+ * @date 2020/11/20 14:55
+ * Description:
+ */
+public interface IMainModel {
+    void goGetData(IDataCallback callback);
+
+    interface IDataCallback {
+        void onDataGet(MainBean bean);
+    }
+}

+ 40 - 0
app/src/main/java/com/miekir/newmvp/main/model/MainModel.java

@@ -0,0 +1,40 @@
+package com.miekir.newmvp.main.model;
+
+import com.miekir.common.utils.LogTool;
+import com.miekir.mvp.model.BaseModel;
+import com.miekir.newmvp.main.bean.MainBean;
+
+import io.reactivex.Observable;
+import io.reactivex.ObservableOnSubscribe;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.disposables.Disposable;
+import io.reactivex.schedulers.Schedulers;
+
+/**
+ * Copyright (C), 2019-2020, Miekir
+ *
+ * @author Miekir
+ * @date 2020/11/14 14:57
+ * Description:
+ */
+
+public class MainModel extends BaseModel implements IMainModel {
+
+    @Override
+    public void goGetData(IDataCallback callback) {
+        Disposable disposable = Observable.create((ObservableOnSubscribe<String>) emitter -> {
+            emitter.onNext("");
+            emitter.onComplete();
+        })
+        .subscribeOn(Schedulers.io())
+        .observeOn(AndroidSchedulers.mainThread())
+        .subscribe(next -> {
+            MainBean bean = new MainBean(17, "Jason");
+            callback.onDataGet(bean);
+        }, error -> {
+            LogTool.d(getClass().getName(), error.getMessage());
+        });
+
+        mDisposableList.add(disposable);
+    }
+}

+ 18 - 4
app/src/main/java/com/miekir/newmvp/MainPresenter.java

@@ -1,7 +1,11 @@
-package com.miekir.newmvp;
+package com.miekir.newmvp.main.presenter;
 
 import com.miekir.common.utils.LogTool;
 import com.miekir.mvp.presenter.BasePresenter;
+import com.miekir.newmvp.main.bean.MainBean;
+import com.miekir.newmvp.main.model.IMainModel;
+import com.miekir.newmvp.main.model.MainModel;
+import com.miekir.newmvp.main.view.IMainView;
 
 import io.reactivex.Observable;
 import io.reactivex.ObservableOnSubscribe;
@@ -17,11 +21,21 @@ import io.reactivex.schedulers.Schedulers;
  * Description:
  */
 public class MainPresenter extends BasePresenter<IMainView> {
+    // todo 在BasePresenter中注入Model
+    private IMainModel mMainModel;
 
     @Override
-    public void onTaskCancel() {
-        // 取消正在后台进行的任务
-        mDisposableList.dispose();
+    public void onInit() {
+        mMainModel = new MainModel();
+    }
+
+    public void getData() {
+        mMainModel.goGetData(new IMainModel.IDataCallback() {
+            @Override
+            public void onDataGet(MainBean bean) {
+
+            }
+        });
     }
 
     public void doWork() {

+ 1 - 1
app/src/main/java/com/miekir/newmvp/IMainView.java

@@ -1,4 +1,4 @@
-package com.miekir.newmvp;
+package com.miekir.newmvp.main.view;
 
 import com.miekir.mvp.view.IView;
 

+ 3 - 1
app/src/main/java/com/miekir/newmvp/MainActivity.java

@@ -1,4 +1,4 @@
-package com.miekir.newmvp;
+package com.miekir.newmvp.main.view;
 
 import android.content.Intent;
 import android.os.Bundle;
@@ -8,6 +8,8 @@ import android.widget.TextView;
 
 import com.miekir.mvp.presenter.InjectPresenter;
 import com.miekir.mvp.view.BaseMvpActivity;
+import com.miekir.newmvp.R;
+import com.miekir.newmvp.main.presenter.MainPresenter;
 
 public class MainActivity extends BaseMvpActivity implements View.OnClickListener, IMainView {
 

+ 1 - 1
app/src/main/res/layout/activity_main.xml

@@ -3,7 +3,7 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    tools:context=".MainActivity"
+    tools:context=".main.view.MainActivity"
     android:orientation="vertical"
     android:gravity="center_horizontal">
 

+ 18 - 0
mvp/src/main/java/com/miekir/mvp/model/BaseModel.java

@@ -0,0 +1,18 @@
+package com.miekir.mvp.model;
+
+import io.reactivex.disposables.CompositeDisposable;
+
+/**
+ * Copyright (C), 2019-2020, Miekir
+ *
+ * @author Miekir
+ * @date 2020/11/20 15:08
+ * Description:
+ */
+public abstract class BaseModel {
+    protected CompositeDisposable mDisposableList = new CompositeDisposable();
+
+    public void onTaskCancel() {
+        mDisposableList.dispose();
+    }
+}

+ 0 - 12
mvp/src/main/java/com/miekir/mvp/model/IMvpModel.java

@@ -1,12 +0,0 @@
-package com.miekir.mvp.model;
-
-/**
- * Copyright (C), 2019-2020, Miekir
- *
- * @author Miekir
- * @date 2020/11/15 19:16
- * Description:
- */
-public interface IMvpModel {
-    void onTaskCancel();
-}

+ 10 - 1
mvp/src/main/java/com/miekir/mvp/presenter/BasePresenter.java

@@ -28,6 +28,8 @@ public abstract class BasePresenter<V extends IView> extends ViewModel {
     private WeakReference<V> mViewReference;
     protected CompositeDisposable mDisposableList = new CompositeDisposable();
 
+    public BasePresenter() {}
+
     /**
      * View的代理,防止空指针判断
      */
@@ -70,5 +72,12 @@ public abstract class BasePresenter<V extends IView> extends ViewModel {
     /**
      * todo 当任务被取消时,界面还存在,响应加载框的取消
      */
-    public abstract void onTaskCancel();
+    public void onTaskCancel() {
+        mDisposableList.dispose();
+    }
+
+    /**
+     * 初始化
+     */
+    public abstract void onInit();
 }