android MVP 简单DEMO
程序员文章站
2022-07-01 16:23:32
最近新入职一家公司发现架构用的是mvp但写的并不好,尤其是在将页面下的所有接口反回的数据都回调在activity里完全违背了mvp的解耦原则,所以自己写了一个就当练习了还没有应用到正式项目中 如果大家看看发现问题请指出勿喷 我也是希望能帮到大家 。BaseActivityimport android.app.Activity;import android.os.Bundle;import com.example.mvp.presenter.BasePresenter;import j.....
最近新入职一家公司发现架构用的是mvp但写的并不好,尤其是在将页面下的所有接口反回的数据都回调在activity里完全违背了mvp的解耦原则,所以自己写了一个就当练习了还没有应用到正式项目中 如果大家看看发现问题请指出勿喷 我也是希望能帮到大家 。
BaseActivity
import android.app.Activity;
import android.os.Bundle;
import com.example.mvp.presenter.BasePresenter;
import java.lang.reflect.ParameterizedType;
public abstract class BaseActivity<T extends BasePresenter> extends Activity {
T presenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getLayoutId());
try {
ParameterizedType ptype = (ParameterizedType) this.getClass().getGenericSuperclass();
Class clazz = (Class<T>) ptype.getActualTypeArguments()[0];
presenter = (T) clazz.newInstance();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
}
presenter.setHold(this);
init();
presenter.initData();
}
public abstract void init();
public abstract int getLayoutId();
}
BasePresenter
import com.example.mvp.BaseActivity;
public class BasePresenter<T extends BaseActivity> {
public T hold;
public void setHold(T hold) {
this.hold = hold;
}
public void initData(){};
}
MainPresenter
import android.view.View;
import com.example.mvp.MainActivity;
public class MainPresenter extends BasePresenter<MainActivity> {
public String test;
public void iniData2() {
}
@Override
public void initData() {
hold.hello.setText("wocaowonadaole");
hold.hello.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
hold.hello.setText("test");
}
});
}
}
MainActivity
import android.widget.TextView;
import com.example.mvp.presenter.MainPresenter;
public class MainActivity extends BaseActivity<MainPresenter> {
public TextView hello;
@Override
public void init() {
hello = findViewById(R.id.tv_hello);
}
@Override
public int getLayoutId() {
return R.layout.activity_main;
}
}
本文地址:https://blog.csdn.net/Victor____asd/article/details/107351070
上一篇: 微信小程序商项目(篇9)用户页面实现
推荐阅读
-
Android特别简单的banner实现自动轮播加底部小圆点
-
Cocos2d游戏开发学习记录——1.Surface、SurfaceView、SurfaceHolder实现简单的游戏demo
-
Android webview加载富文本 屏幕简单适配
-
Android编程实现简易弹幕效果示例【附demo源码下载】
-
Android编程实现仿QQ发表说说,上传照片及弹出框效果【附demo源码下载】
-
Android制作简单垂直上拉下滑View效果
-
Android组件ListView列表简单使用
-
Android编程实现Toast自定义布局简单示例
-
Android引导页面的简单实现
-
Android编程实现仿易信精美弹出框效果【附demo源码下载】