Bean类 MessageBean
public class MessageBean<T> { /** * msg : 请求成功 * code : 0 * data : [] */ private String msg; private String code; private T data; public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public T getData() { return data; } public void setData(T data) { this.data = data; } }MessageEvent
public class MessageEvent { private boolean checked; public boolean isChecked() { return checked; } public void setChecked(boolean checked) { this.checked = checked; } }PriceAndCountEvent
public class PriceAndCountEvent { private int price; private int count; public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } public int getCount() { return count; } public void setCount(int count) { this.count = count; } }SomeId
public class SomeId { private String pid; public String getPid() { return pid; } public void setPid(String pid) { this.pid = pid; } }
Moodel类 DelModel
public class DelModel implements IModel { private DelPresenter presenter; public DelModel(DelPresenter presenter){ this.presenter = presenter; } @Override public void getData(String uid,String pid) { Flowable<MessageBean> delFlowable = RetrofitUtils.getInstance().getApiService().deleteData(uid,pid); presenter.delData(delFlowable); } }IModel
public interface IModel { void getData(String uid, String pid); }NewsModel
public class NewsModel implements IModel { private NewsPresenter presenter; public NewsModel(NewsPresenter presenter){ this.presenter = (NewsPresenter) presenter; } @Override public void getData(String uid,String pid) { Flowable<MessageBean<List<DatasBean>>> flowable = RetrofitUtils.getInstance().getApiService().getDatas(uid); presenter.getNews(flowable); } }
Presenter类 BasePresenter
public interface BasePresenter { void getData(String uid, String pid); }DelPresenter
public class DelPresenter implements BasePresenter { private Iview iv; private DisposableSubscriber subscriber2; public void attachView(Iview iv) { this.iv = iv; } public void detachView() { if (iv != null) { iv = null; } if (!subscriber2.isDisposed()){ subscriber2.dispose(); } } @Override public void getData(String uid,String pid) { DelModel model = new DelModel(this); model.getData(uid,pid); } public void delData(Flowable<MessageBean> delFlowable) { subscriber2 = delFlowable.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribeWith(new DisposableSubscriber<MessageBean>() { @Override public void onNext(MessageBean listMessageBean) { if (listMessageBean != null) { iv.delSuccess(listMessageBean); } } @Override public void onError(Throwable t) { iv.onFailed((Exception) t); } @Override public void onComplete() { } }); } }NewsPrensenter
public class NewsPresenter implements BasePresenter { private Iview iv; private DisposableSubscriber subscriber1; // private DisposableSubscriber subscriber2; public void attachView(Iview iv) { this.iv = iv; } public void detachView() { if (iv != null) { iv = null; } if (!subscriber1.isDisposed()){ subscriber1.dispose(); } // if (!subscriber2.isDisposed()){ // subscriber2.dispose(); // } } @Override public void getData(String uid,String pid) { NewsModel model = new NewsModel(this); model.getData(uid,pid); } public void getNews(Flowable<MessageBean<List<DatasBean>>> flowable) { subscriber1 = flowable.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribeWith(new DisposableSubscriber<MessageBean<List<DatasBean>>>() { @Override public void onNext(MessageBean<List<DatasBean>> listMessageBean) { if (listMessageBean != null) { List<DatasBean> list = listMessageBean.getData(); if (list != null) { iv.onSuccess(list); } } } @Override public void onError(Throwable t) { iv.onFailed((Exception) t); } @Override public void onComplete() { } }); } // public void delData(Flowable<MessageBean> delFlowable) { // subscriber2 = delFlowable.subscribeOn(Schedulers.io()) // .observeOn(AndroidSchedulers.mainThread()) // .subscribeWith(new DisposableSubscriber<MessageBean>() { // @Override // public void onNext(MessageBean listMessageBean) { // if (listMessageBean != null) { // iv.delSuccess(listMessageBean); // // } // } // // // // @Override // public void onError(Throwable t) { // iv.onFailed((Exception) t); // } // // @Override // public void onComplete() { // // } // }); // } }
View类 AddDeleteView
public class AddDeleteView extends LinearLayout { public OnAddDelClickListener listener; public TextView et_number; public void setOnAddDelClickListener(OnAddDelClickListener listener) { if (listener != null) { this.listener = listener; } } public interface OnAddDelClickListener{ void onAddClick(View v); void onDelClick(View v); } public AddDeleteView(Context context) { this(context,null); } public AddDeleteView(Context context, @Nullable AttributeSet attrs) { this(context, attrs,0); } public AddDeleteView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); initView(context,attrs,defStyleAttr); } public void initView(Context context,AttributeSet attrs,int defStyleAttr){ View.inflate(context, R.layout.layout_add_delete,this); Button but_add = findViewById(R.id.but_add); Button but_delete = findViewById(R.id.but_delete); et_number = findViewById(R.id.et_number); TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.AddDeleteViewStyle); String left_text = typedArray.getString(R.styleable.AddDeleteViewStyle_left_text); String middle_text = typedArray.getString(R.styleable.AddDeleteViewStyle_middle_text); String right_text = typedArray.getString(R.styleable.AddDeleteViewStyle_right_text); but_delete.setText(left_text); but_add.setText(right_text); et_number.setText(middle_text); //释放资源 typedArray.recycle(); but_add.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { listener.onAddClick(view); } }); but_delete.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { listener.onDelClick(view); } }); } /** * 对外提供设置EditText值的方法 */ public void setNumber(int number){ if (number>0){ et_number.setText(number+""); } } /** * 得到控件原来的值 */ public int getNumber(){ int number = 0; try { String numberStr = et_number.getText().toString().trim(); number = Integer.valueOf(numberStr); } catch (Exception e) { number = 0; } return number; } }Iview
public interface Iview { void onSuccess(Object o); void onFailed(Exception e); void delSuccess(MessageBean listMessageBean); }
Api Api
public interface ApiService { // http://120.27.23.105/product/deleteCart?uid=72&pid=1 @GET("product/getCarts") Flowable<MessageBean<List<DatasBean>>> getDatas(@Query("uid") String uid); @GET("product/deleteCart") Flowable<MessageBean> deleteData(@Query("uid") String uid, @Query("pid") String pid); }
public class LoggingInterceptor implements Interceptor { @Override public Response intercept(Chain chain) throws IOException { Request original = chain.request(); HttpUrl url=original.url().newBuilder() .addQueryParameter("source","android") .build(); //添加请求头 Request request = original.newBuilder() .url(url) .build(); return chain.proceed(request); } }