-
Notifications
You must be signed in to change notification settings - Fork 16
Feature Mvp
D edited this page Mar 17, 2018
·
1 revision
1).MModel
2).MAdapter
3).MFragmentActivity、MFragment、MPresenter、IMView
public class MModel {
public int index;
public String content;
}
public class MAdapter extends CommonAdapter<MModel> {
public MAdapter(Context context, List<MModel> datas, int layoutId) {
super(context, datas, layoutId);
}
@Override
public void convert(int position, CommonHolder holder, MModel item) {
}
}
public interface IMView extends MvpView {
void setData();
}
public class MPresenter extends MvpBasePresenter<IMView> {
public MPresenter(Context context) {
super(context);
}
/**
* 网络请求 例子
*/
public void getData() {
//step 7-6: Presenter逻辑: 网络请求
new Thread(new Runnable() {
@Override
public void run() {
//do some thing e.g network requests...
if (getView() == null) {
//activity 生命周期结束,不可回调回此activity,可执行非此activity操作
return;
}
//activity 生命周期内
getView().setData();
}
}).start();
}
}
public class MFragment extends BaseFragment<MPresenter> implements IMView {
@Override
protected int getLayoutRes() {
//step 7-1: Xml布局
return 0;
}
@Override
public MPresenter getPresenter() {
//step 7-2: new Presenter实例,Context必须ApplicationContext,避免内存泄漏
return new MPresenter(getActivity().getApplicationContext());
}
@Override
protected MvpView getMvpView() {
//step 7-3: 返回View给Presenter持有,this即本身
return this;
}
@Override
protected void bindView(View rootView) {
super.bindView(rootView);
//step 7-4: 通过ViewHelper.findView(...)、ViewHelper.setOnClick(...),绑定成员View变量及点击事件
}
@Override
protected void init() {
//step 7-5: View已绑定,初始化操作...这里的逻辑在onCreate的最后执行
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
//step 7-5: Presenter已绑定View,可以调用Presenter逻辑
mPresenter.getData();
}
@Override
public void setData() {
//step 7-7: 处理返回的数据
}
}
public class MFragmentActivity extends BaseFragmentActivity {
@Override
protected int getLayoutRes() {
//step 3-1: Xml布局
return 0;
}
@Override
protected void bindView() {
super.bindView();
//step 3-2: 通过@BindView/ViewHelper.findView(...)、ViewHelper.setOnClick(...),绑定成员View变量及点击事件
}
@Override
protected void init() {
//step 3-3: 初始化操作...这里的逻辑在onCreate的最后执行
MFragment fragment = new MFragment();
getSupportFragmentManager().beginTransaction().replace(0, fragment).commitAllowingStateLoss();
}
}