东拼西凑的整理
activity抽取方法
//布局
setContentView(initLayout());
//初始化
init();
//数据
initDate();
//逻辑
initLogic();
fragment的抽取
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
//布局
View view = inflater.inflate(initLayout(), container, false);
//绑定需要的控件
bind = ButterKnife.bind(this,view);
//初始化
this.init();
//数据
this.initData();
return view;
}
MVP基类的绑定
public interface BaseContrat {
abstract class BasePresenter<M,V>{
public M baseModel;
public V baseView;
private WeakReference<V> weakReference;
public abstract M getModel();
public void Attach(M baseModel, V baseView){
this.baseModel=baseModel;
weakReference = new WeakReference<>(baseView);
this.baseView=weakReference.get();
}
//清除
public void onDestroy(){
if (weakReference!=null){
weakReference.clear();
weakReference=null;
baseView=null;
}
}
}
//view接口
interface IBaseView<T>{
BasePresenter getPresenter();
void successful(T object);
void failure(String error);
}
//model接口
interface IBaseModel{
}
}
判断是否有网络
//网络判断
public boolean isnetwork(Context context){
ConnectivityManager connectivityManager = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
if (activeNetworkInfo!=null){
return activeNetworkInfo.isAvailable();
}
return false;
}
MVP的封装
activity和fragment的封装基本一样
public abstract class BaseMvpActivity<M extends BaseContrat.IBaseModel,
P extends BaseContrat.BasePresenter> extends BaseActivity implements BaseContrat.IBaseView {
public P basePresenter;
public M baseModel;
//绑定
@Override
public void init() {
boolean isnetwork = HttpRetrofitUtil.get().isnetwork(this);
if (!isnetwork){
Toast.makeText(this, "未连接网络", Toast.LENGTH_SHORT).show();
}
basePresenter = (P) getPresenter();
if (basePresenter!=null){
baseModel = (M) basePresenter.getModel();
if (baseModel!=null){
basePresenter.Attach(baseModel,this);
}
}
}
//清除
@Override
protected void onDestroy() {
super.onDestroy();
basePresenter.onDestroy();
}
}
MVP的抽取
public interface IContrat {
abstract class IPresenter extends BaseContrat.BasePresenter<IModel,IView>{
@Override
public IModel getModel() {
return new Model();
}
M层的数据
public abstract void post(String url, Map<String, String> map, Class aClass);
}
interface IModel extends BaseContrat.IBaseModel {
请求数据的方法
void post(String url, Map<String, String> map, Class aClass, IModelCallBack iModerCallBack);
}
interface IView extends BaseContrat.IBaseView {
}
}
在activity中的使用
public class LoginActivity extends
BaseMvpActivity<IContrat.IModel, IContrat.IPresenter> implements IContrat.IView {}