Android MVP封装模拟登陆

来源:互联网 发布:政府数据库 编辑:程序博客网 时间:2024/06/06 02:49

BaseMVPActivity代码

package com.bwie.myapplication.activity;import android.app.Activity;import android.os.Bundle;/** * Created by hp on 2017/12/5. */public abstract class BaseMVPActivity<V,T extends BasePresenter<V>> extends Activity {    public T t;    public abstract T initPresenter();    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        t = initPresenter();    }    @Override    protected void onResume() {        super.onResume();        t.attach((V) this);    }    @Override    protected void onDestroy() {        super.onDestroy();        t.detach();    }}


BasePresenter代码

package com.bwie.myapplication.activity;/** * Created by hp on 2017/12/5. */public class BasePresenter<V> {    public V view;    public void attach(V v){        this.view = v;    }    public void detach(){        this.view = null;    }}

IApplication代码

package com.bwie.myapplication.activity;import android.app.Application;import retrofit2.Retrofit;import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;import retrofit2.converter.gson.GsonConverterFactory;/** * Created by hp on 2017/12/5. */public class IApplication extends Application {    public static IInterface iInterface;    @Override    public void onCreate() {        super.onCreate();        Retrofit retrofit = new Retrofit.Builder()                .baseUrl("http://api.tianapi.com")                .addConverterFactory(GsonConverterFactory.create())                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())                .build();        iInterface = retrofit.create(IInterface.class);    }}

IInterface

package com.bwie.myapplication.activity;import com.bwie.myapplication.bean.Bean;import java.util.Map;import io.reactivex.Observable;import retrofit2.http.FieldMap;import retrofit2.http.GET;import retrofit2.http.POST;import retrofit2.http.QueryMap;/** * Created by hp on 2017/12/5. */public interface IInterface {    @GET("/nba")    Observable<Bean> get(@QueryMap Map<String,String> map);    @POST("/nba")    Observable<Bean> post(@FieldMap Map<String,String> map);}

LoginAcitivity代码

package com.bwie.myapplication.activity;import android.os.Bundle;import android.view.View;import com.bwie.myapplication.R;import com.bwie.myapplication.bean.Bean;import com.bwie.myapplication.presenter.LoginPresenter;import com.bwie.myapplication.view.LoginView;/** * Created by hp on 2017/12/5. */public class LoginActivity extends BaseMVPActivity<LoginView,LoginPresenter> implements LoginView {    @Override    public LoginPresenter initPresenter() {        return new LoginPresenter();    }    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                t.login("muhanxi","password");            }        });    }    @Override    public void onSuccess(Bean bean) {        System.out.println("===================" + bean.toString());    }    @Override    public void onFailure() {    }}

Model层代码

package com.bwie.myapplication.model;import com.bwie.myapplication.activity.IApplication;import com.bwie.myapplication.bean.Bean;import java.util.HashMap;import java.util.Map;import io.reactivex.android.schedulers.AndroidSchedulers;import io.reactivex.functions.Consumer;import io.reactivex.schedulers.Schedulers;/** * Created by hp on 2017/12/5. */public class LoginModel {    public void getData(final LoginModelCallBack callBack){        Map<String,String> map = new HashMap<>();        map.put("key","71e58b5b2f930eaf1f937407acde08fe");        map.put("num","20");        IApplication.iInterface.get(map)                .subscribeOn(Schedulers.io())                .observeOn(AndroidSchedulers.mainThread())                .subscribe(new Consumer<Bean>() {                    @Override                    public void accept(Bean bean) throws Exception {                       callBack.onSuccess(bean);                    }                });    }}

Model接口代码

package com.bwie.myapplication.model;import com.bwie.myapplication.bean.Bean;/** * Created by hp on 2017/12/5. */public interface LoginModelCallBack {    public void onSuccess(Bean bean);}

presenter层代码

package com.bwie.myapplication.presenter;import com.bwie.myapplication.activity.BasePresenter;import com.bwie.myapplication.bean.Bean;import com.bwie.myapplication.model.LoginModel;import com.bwie.myapplication.model.LoginModelCallBack;import com.bwie.myapplication.view.LoginView;/** * Created by hp on 2017/12/5. */public class LoginPresenter extends BasePresenter<LoginView> {    LoginModel model;    public LoginPresenter() {        this.model = new LoginModel();    }    public void login(String username,String password){        model.getData(new LoginModelCallBack() {            @Override            public void onSuccess(Bean bean) {                view.onSuccess(bean);            }        });    }}

view层代码

package com.bwie.myapplication.view;import com.bwie.myapplication.bean.Bean;/** * Created by hp on 2017/12/5. */public interface LoginView {    public void onSuccess(Bean bean);    public void onFailure();}



原创粉丝点击