| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> 移动开发 -> android MVP的使用 -> 正文阅读 |
|
|
[移动开发]android MVP的使用 |
|
1.介绍 M->model:数据 V->view:activity P->Presenter:连接M和V 2.基本使用 2.1 View层 (1)父类BaseView(IBaseView )
(2)子类BaseView(BaseView)
?2.2?model层 (1) 父类(IBaseModel) public interface IBaseModel {
void loadData(OnLoadData onLoadData);
interface OnLoadData <T>{
void onComplete(List<T> goodsDataList);
void onError(String msg);
}
}
(2)数据Model(GoodsModel) public class GoodsModel implements IBaseModel {
@Override
public void loadData(OnLoadData onLoadData) {
onLoadData.onComplete(getData());
}
private List<GoodsData> getData() {
ArrayList goodsList = new ArrayList();
for (int i = 0; i < 100; i++) {
GoodsData goodsData = new GoodsData("", "内容1" + i, "内容2" + i);
goodsList.add(goodsData);
}
return goodsList;
}
}
2.3 Presenter层 (1)父类Presenter(BasePresenter) public class BasePresenter<T extends IBaseView> {
WeakReference<T> iGoodView;
// 绑定
public void attachView(T view){
iGoodView=new WeakReference<>(view);
}
// 解绑
public void detachView(){
if (iGoodView!=null){
iGoodView.clear();
iGoodView=null;
}
}
}
(2)连接BaseView和GoodsModel的GoodsPresenter public class GoodsPresenter<T extends IBaseView> extends BasePresenter {
// 2.持有model接口
GoodsModel iGoodsModel = new GoodsModel();
// 3.持有业务逻辑
public void fetch() {
if (iGoodView != null && iGoodsModel != null) {
iGoodsModel.loadData(new IBaseModel.OnLoadData() {
@Override
public void onComplete(List goodsDataList) {
((BaseView) iGoodView.get()).showView(goodsDataList);
}
@Override
public void onError(String msg) {
}
});
}
}
}
3.基础Activity(BaseActivity) public abstract class BaseActivity<T extends BasePresenter,V extends IBaseView> extends AppCompatActivity {
protected T presenter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 布局文件
setContentView(setLayout());
// 定义一个选择表示层
presenter=createPresenter();
presenter.attachView((V)this);
// 初始化view
initView();
// 注册
registerSDK();
// 销毁注册
unRegisterSDK();
}
private void registerSDK() {
}
private void unRegisterSDK() {
}
protected abstract int setLayout();
protected abstract void initView();
protected abstract T createPresenter();
@Override
protected void onDestroy() {
super.onDestroy();
presenter.detachView();
}
}
4.MainActivity public class MainActivity extends BaseActivity<GoodsPresenter, IBaseView> implements BaseView {
private ListView lvGoods;
//private GoodsPresenter presenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
protected int setLayout() {
return R.layout.activity_main;
}
@Override
protected void initView() {
lvGoods=findViewById(R.id.lvGoods);
presenter.fetch();
lvGoods.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Intent intent=new Intent(MainActivity.this,Main2Activity.class);
startActivity(intent);
}
});
}
@Override
protected GoodsPresenter createPresenter() {
return new GoodsPresenter();
}
@Override
public void showView(List goodsDataList) {
lvGoods.setAdapter(new GoodsAdapter(MainActivity.this,goodsDataList));
}
@Override
public void showErrorMsg(String errormsg) {
}
}
5.其他界面可以重新写GoodsModel和GoodsPresenter |
|
|
| 移动开发 最新文章 |
| Vue3装载axios和element-ui |
| android adb cmd |
| 【xcode】Xcode常用快捷键与技巧 |
| Android开发中的线程池使用 |
| Java 和 Android 的 Base64 |
| Android 测试文字编码格式 |
| 微信小程序支付 |
| 安卓权限记录 |
| 知乎之自动养号 |
| 【Android Jetpack】DataStore |
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年11日历 | -2025/11/28 6:28:20- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |