RetrofitApi
@POST("file/upload") @Multipart Observable<Test> uploadFile(@Query("uid") String uid, @Part MultipartBody.Part file,@Query("token")String token); @GET("user/getUserInfo") Observable<GrBean> getBean(@Query("uid")String uid);Constant
public interface Constant { String baseUrl="https://www.zhaoapi.cn/"; }
private OkHttpClient client; private Retrofit retrofit; private RetrofitUntils() { HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor(); httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY); client = new OkHttpClient.Builder() .addInterceptor(httpLoggingInterceptor) .build(); retrofit = new Retrofit.Builder() .baseUrl(Constant.baseUrl) .client(client) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .build(); } //单列模式 private static RetrofitUntils INSTANCE; public static RetrofitUntils getInsatnce() { if (INSTANCE == null) { synchronized (RetrofitUntils.class) { if (INSTANCE == null) { INSTANCE = new RetrofitUntils(); } } } return INSTANCE; } public RetrofitApi getApi() { RetrofitApi retrofitApi = retrofit.create(RetrofitApi.class); return retrofitApi;
}
BasePersenter
public class BasePresenter<V extends BaseIView> { private V iBaseView; // public void attachView(V iBaseView) { this.iBaseView = iBaseView; } public V getView() { return iBaseView; } public void dechView() { iBaseView = null; } }
MyPresenter
public class MyPresenter extends BasePresenter<IView> { private RetrofitUntils retrofitUntils; public MyPresenter(){ //拿到单例 retrofitUntils=RetrofitUntils.getInsatnce(); } public void loadDataServer(String mobile,String password){ Observable<Bean> observable = retrofitUntils.getApi().getCall(mobile,password); observable.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<Bean>() { @Override public void onSubscribe(Disposable d) { } @Override public void onNext(Bean bean) { Log.e("onNext","onNext"); getView().chenggong(bean); } @Override public void onError(Throwable e) { Log.e("onError","onError"); } @Override public void onComplete() { } }); } public void loadDataServerlist(String pscid){ final Observable<ListBean> getlist = retrofitUntils.getApi().getlist(pscid); getlist.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<ListBean>() { @Override public void onSubscribe(Disposable d) { } @Override public void onNext(ListBean listBean) { Log.e("onNext", String.valueOf(listBean)); getView().listchenggong(listBean); } @Override public void onError(Throwable e) { Log.e("onError","onError"); getView().shibai(e.getMessage()); } @Override public void onComplete() { } }); } }
BaseIView
public interface BaseIView {
}
IView
public interface IView extends BaseIView{ void chenggong(Bean bean); void shibai(String msg);}
BaseActivity
public abstract class BaseActivity <P extends BasePresenter> extends AppCompatActivity implements IView{ public P BasePresenter; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(setLayout()); initView(); initBaseView(); initData(); } private void initBaseView() { BasePresenter=setPresenter(); if(BasePresenter!=null){ BasePresenter.attachView(this); } } protected abstract void initData(); protected abstract void initView(); protected abstract int setLayout(); abstract P setPresenter(); }
MainActivity
public class MainActivity extends BaseActivity<MyPresenter> implements IView{ private EditText del; private EditText pass; private Button login; private String del1; private String pass1; private RecyclerView rec; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override protected void initData() { BasePresenter.attachView(this); BasePresenter.loadDataServerlist("1"); } @Override protected void initView() { del = findViewById(R.id.del); pass = findViewById(R.id.password); login = findViewById(R.id.login); rec = findViewById(R.id.rec); login.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { del1 = del.getText().toString(); pass1 = pass.getText().toString(); BasePresenter.loadDataServer(del1,pass1); } }); } @Override protected int setLayout() { return R.layout.activity_main; } @Override MyPresenter setPresenter() { return new MyPresenter(); } @Override public void chenggong(Bean bean) { if(bean.getCode().equals("0")){ Toast.makeText(this,bean.getMsg(),Toast.LENGTH_SHORT).show(); } } @Override public void shibai(String msg) { Toast.makeText(this,"登录失败",Toast.LENGTH_SHORT).show(); } @Override public void listchenggong(ListBean bean) { List<ListBean.DataBean> data = bean.getData(); ListAdater listAdater=new ListAdater(data,this); LinearLayoutManager linearLayoutManager=new LinearLayoutManager(this); rec.setLayoutManager(linearLayoutManager); rec.setAdapter(listAdater); } @Override public void listshibai(String msg) { } }