MVP++

 BaseActivity


package com.example.com.mymvp1.ui.base;




public abstract class BaseActivaty<T extends BaseContract.BasePresenter> extends AppCompatActivity implements IBase,BaseContract.BaseView{
    @Inject
    protected T mPersenter;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        inject();
        //绑定
        mPersenter.attchView(this);
    }


    @Override
    protected void onDestroy() {
        super.onDestroy();
        //解绑
        mPersenter.detachView();
    }


    @Override
    public void showLoading() {


    }


    @Override
    public void dissMissLoading() {


    }


}


BaseContract


public interface BaseContract {
    interface BasePresenter<T extends BaseContract.BaseView>{
        void attchView(T view);
        void detachView();
    }
    interface BaseView{
        void showLoading();
        void dissMissLoading();
    }

}

  BaseFragment

public abstract class BaseFragment<T extends BaseContract.BasePresenter> extends Fragment implements IBase,BaseContract.BaseView{
    @Inject
    protected  T mPresensenter;
    private Unbinder unbinder;
    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        inject();
        //绑定
        if(mPresensenter!=null){
            mPresensenter.attachView(this);
        }
    }


    @Override
    public void onDestroy() {
        super.onDestroy();
        //解绑
       if(mPresensenter!=null){
           mPresensenter.detachView();
       }
       if(unbinder!=null){
           unbinder.unbind();
       }
    }


    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view=inflater.inflate(getConnectLayout(),null);
        initView(view);
        return view;
    }


    @Override
    public void showLoading() {


    }


    @Override
    public void dimissLoading() {


    }


}

BasePersenter

public class BasePersenter<T extends BaseContract.BaseView> implements BaseContract.BasePresenter<T>{
    protected T mView;
    @Override
    public void attchView(T view) {
        this.mView=view;
    }


    @Override
    public void detachView() {
        if (mView!=null){
            mView=null;
        }
    }

}


HttpComponent

@Component(modules = HttpModlue.class)
public interface HttpComponent {
    void inject(MainActivity mainActivity);

}

LoginContract

public interface LoginContract {
    interface View extends BaseContract.BaseView{
        void logingSuccess(Mybean mybean);
    }
    interface Presenter extends BaseContract.BasePresenter<View>{
        void login(String mobile,String password);
    }

}

IBase

public interface IBase {
    int getContentLouat();
    void inject();

}


HttpModlue

@Module
public class HttpModlue {
    @Provides
    OkHttpClient.Builder OkHttp(){
        return  new OkHttpClient.Builder()
                .connectTimeout(20, TimeUnit.SECONDS)
                .writeTimeout(20,TimeUnit.SECONDS)
                .readTimeout(20,TimeUnit.SECONDS);
    }
    @Provides
    LoginApi myLoginApi(OkHttpClient.Builder builder){
        LoginApiService loginApiService =new Retrofit.Builder()
                .baseUrl("https://www.zhaoapi.cn/")
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .addConverterFactory(GsonConverterFactory.create())
                .client(builder.build())
                .build()
                .create(LoginApiService.class);
        return LoginApi.getLoginApi(loginApiService);
    }

}

LoginApi

  private LoginApi(LoginApiService loginApiService) {
        this.loginApiService = loginApiService;
    }
    public static LoginApi getLoginApi(LoginApiService loginApiService){
        if(loginApi==null){
            loginApi=new LoginApi(loginApiService);
        }
        return loginApi;
    }
    public Observable<Mybean> login(String mobile,String password){
        return loginApiService.login(mobile,password);

    }


LoginApiServiece

public interface LoginApiService {
    @FormUrlEncoded
    @POST("user/login")
    Observable<Mybean> login(@Field("mobile") String mobile,@Field("password") String password);

}


LoginPersenter


public class LoginPersenter extends BasePersenter<LoginContract.View> implements LoginContract.Presenter{
    LoginApi loginApi;
    @Inject
    public LoginPersenter(LoginApi loginApi) {
        this.loginApi = loginApi;
    }


    @Override
    public void login(String mobile, String password) {
        loginApi.login(mobile,password)
                .observeOn(AndroidSchedulers.mainThread())
                .subscribeOn(Schedulers.io())
                .subscribe(new Observer<Mybean>() {
                    @Override
                    public void onSubscribe(Disposable d) {


                    }


                    @Override
                    public void onNext(Mybean mybean) {
                        mView.logingSuccess(mybean);
                    }


                    @Override
                    public void onError(Throwable e) {


                    }


                    @Override
                    public void onComplete() {


                    }
                });
    }

}


MainActivity

public class MainActivity extends BaseActivaty<LoginPersenter> implements View.OnClickListener,LoginContract.View {


    /**
     * 请输入您的手机号码
     */
    private EditText mPhone;
    /**
     * 请输入密码
     */
    private EditText mPassword;
    /**
     * 登录
     */
    private Button mBut;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(getContentLouat());
        initView();
    }


    private void initView() {
        mPhone = (EditText) findViewById(R.id.phone);
        mPassword = (EditText) findViewById(R.id.password);
        mBut = (Button) findViewById(R.id.but);
        mBut.setOnClickListener(this);
    }


    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            default:
                break;
            case R.id.but:
                  String phone = mPhone.getText().toString();
                  String password=mPassword.getText().toString();
                  mPersenter.login(phone,password);
                break;
        }
    }


    @Override
    public int getContentLouat() {
        return R.layout.activity_main;
    }


    @Override
    public void inject() {
        DaggerHttpComponent.builder()
                .httpModlue(new HttpModlue())
                .build()
                .inject(this);


    }


    @Override
    public void logingSuccess(Mybean mybean) {
        Toast.makeText(this,""+mybean.getMsg(),Toast.LENGTH_SHORT).show();
    }
}








   


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值