| |
|
开发:
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图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 9:35:36- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |