当前位置: 首页 > news >正文

网站开发行业百度推广登录入口登录

网站开发行业,百度推广登录入口登录,网页游戏排行榜前十微信小程序,吉林建设网站前言 Model:负责数据逻辑 View:负责视图逻辑 Controller:负责业务逻辑 持有关系: 1、View 持有 Controller 2、Controller 持有 Model 3、Model 持有 View 辅助工具:ViewBinding 执行流程:View >…

前言

Model:负责数据逻辑

View:负责视图逻辑

Controller:负责业务逻辑

持有关系:

1、View 持有 Controller

2、Controller 持有 Model

3、Model 持有 View

辅助工具:ViewBinding

执行流程:View  ==> Controller ==> Model ==> View

案例效果图:

1、定义Controller接口

/*** 控制器接口 负责业务逻辑*/
public interface IController extends IBaseController {void setModel(IModel model); // 持有model/*** 这些都是方法,都是由 View 调用的*/void onDataChanged(String data); // 监听输入文本事件,通知 Modelvoid submitFrom(); // 提交表单事件,通知 Modelvoid clearData(); // 清空按钮点击事件,通知 Model}

1.1、实现Controller接口

/*** 业务逻辑 具体实现*/
public class IControllerImp implements IController {private IModel model;@Overridepublic void setModel(IModel model) {this.model = model;}@Overridepublic void removeHandlerMsgAndCallback() {model.removeHandlerMsgAndCallback();}@Overridepublic void onDataChanged(String data) {model.onDataChanged(data);}@Overridepublic void submitFrom() {model.submitFromData();}@Overridepublic void clearData() {model.clearData();}
}

2、定义Model接口

/*** 数据模型接口 负责数据逻辑*/
public interface IModel extends IBaseModel {void setView(IView view); // 持有View/*** 这些都是方法,都是由 Controller 调用的*/void onDataChanged(String data); // 监听文本变化,时时更新数据后,通知 Viewvoid submitFromData(); // 提交表单数据后,通知 Viewvoid clearData(); // 清空数据后,通知 View}

2.1、实现Model接口

/*** 数据模型逻辑 具体实现*/
public class IModelImp implements IModel {private String mData = "";private Handler handler = new Handler();private IView iview;@Overridepublic void setView(IView view) {this.iview = view;}@Overridepublic void removeHandlerMsgAndCallback() {handler.removeCallbacksAndMessages(null);}@Overridepublic void onDataChanged(String data) {mData = data;iview.onDataChangedUpdateText(data);}@Overridepublic void submitFromData() {iview.showSubmitFromLoading(mData);handler.removeCallbacksAndMessages(null);handler.postDelayed(new Runnable() {@Overridepublic void run() {iview.hideSubmitFromLoading();}}, 1500);}@Overridepublic void clearData() {mData = "";iview.clearFromData();}
}

3、定义View接口

/*** 视图接口 负责视图逻辑*/
public interface IView extends IBaseView {default void setController(IController controller) {} // 持有控制器,根据View事件,通知 Controller/*** 这些都是方法,都是由 Model 调用的*/void onDataChangedUpdateText(String data); // 根据时时数据更新TextViewvoid showSubmitFromLoading(String data); // 显示loadingvoid hideSubmitFromLoading(); // 隐藏loadingvoid clearFromData(); // 清空EditText数据}

3.1、实现View接口

/*** 视图逻辑 具体实现*/
public class MVCActivity extends AppCompatActivity implements IView,View.OnClickListener {private IModel iModel; // 数据层 Mprivate IController iController; // 控制器层 Cprivate AlertDialog dialog;private ActivityMvcBinding binding;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);binding = ActivityMvcBinding.inflate(getLayoutInflater());setContentView(binding.getRoot());iModel = new IModelImp();iController = new IControllerImp();// 注意一下,写的顺序iModel.setView(this); // 持有ViewiController.setModel(iModel); // 持有ModelsetController(iController); // 持有控制器init();}@Overridepublic void onClick(View v) {if (v == binding.submitBtn) {iController.submitFrom();} else if (v == binding.clearBtn) {iController.clearData();}}@Overrideprotected void onDestroy() {super.onDestroy();iController.removeHandlerMsgAndCallback();}private void init() {binding.editMsg.setText("normal");binding.edit.addTextChangedListener(new TextWatcher() {@Overridepublic void beforeTextChanged(CharSequence s, int start, int count, int after) {}@Overridepublic void onTextChanged(CharSequence s, int start, int before, int count) {iController.onDataChanged(s.toString());}@Overridepublic void afterTextChanged(Editable s) {}});binding.submitBtn.setOnClickListener(this);binding.clearBtn.setOnClickListener(this);}@Overridepublic void onDataChangedUpdateText(String data) {binding.editMsg.setText(data);}@Overridepublic void showSubmitFromLoading(String data) {AlertDialog.Builder builder = new AlertDialog.Builder(this);TextView textView = new TextView(this);if (TextUtils.isEmpty(data)) {data = "normal";}textView.setText("正在提交:" + data);builder.setCancelable(false);builder.setView(textView);dialog = builder.show();}@Overridepublic void hideSubmitFromLoading() {dialog.dismiss();}@Overridepublic void clearFromData() {binding.edit.setText("");binding.editMsg.setText("normal");}
}

4、IBaseController

/*** Base 控制器接口 负责业务逻辑*/
public interface IBaseController {// 写一些,公用或者通用的方法,用于扩展default void removeHandlerMsgAndCallback() {} // 删除handler 回调和消息}

5、IBaseModel

/*** Base 数据模型接口 负责数据逻辑*/
public interface IBaseModel {// 写一些,公用或者通用的方法,用于扩展default void removeHandlerMsgAndCallback() {} // 删除handler 回调和消息}

6、IBaseView

/*** Base 视图接口 负责视图逻辑*/
public interface IBaseView {// 写一些,公用或者通用的方法,用于扩展default void testBaseView() {}}

7、activity_mvc.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".ui.activity.MVCActivity"><androidx.appcompat.widget.Toolbarandroid:id="@+id/toolbar"android:layout_width="match_parent"android:layout_height="48dp"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent"android:background="@color/material_dynamic_primary90"app:title="MVC" /><EditTextandroid:id="@+id/edit"android:layout_width="match_parent"android:layout_height="50dp"android:layout_marginHorizontal="16dp"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toBottomOf="@id/toolbar" /><TextViewandroid:id="@+id/edit_msg"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="8dp"app:layout_constraintLeft_toLeftOf="@id/edit"app:layout_constraintTop_toBottomOf="@id/edit" /><androidx.appcompat.widget.AppCompatButtonandroid:id="@+id/submit_btn"android:layout_width="match_parent"android:layout_height="58dp"android:layout_marginHorizontal="16dp"android:layout_marginTop="8dp"android:text="submit"android:textAllCaps="false"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toBottomOf="@id/edit_msg" /><androidx.appcompat.widget.AppCompatButtonandroid:id="@+id/clear_btn"android:layout_width="match_parent"android:layout_height="58dp"android:layout_marginHorizontal="16dp"android:layout_marginTop="8dp"android:text="clear"android:textAllCaps="false"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toBottomOf="@id/submit_btn" /></androidx.constraintlayout.widget.ConstraintLayout>

8、源码地址

GitHub - LanSeLianMa/AndroidMVC: Android MVC 写法

9、其他写法

Android MVP 写法-CSDN博客

Android MVVM 写法-CSDN博客


文章转载自:
http://wanjiaigg.jtrb.cn
http://wanjiatyphus.jtrb.cn
http://wanjiamotivity.jtrb.cn
http://wanjiaphotocoagulating.jtrb.cn
http://wanjiacanvasback.jtrb.cn
http://wanjiaconsumingly.jtrb.cn
http://wanjiadispersant.jtrb.cn
http://wanjiahatchety.jtrb.cn
http://wanjiaimmobilise.jtrb.cn
http://wanjiaadjutantship.jtrb.cn
http://wanjiaunceasing.jtrb.cn
http://wanjiaunrelatable.jtrb.cn
http://wanjiafarcied.jtrb.cn
http://wanjiapogonip.jtrb.cn
http://wanjialoanda.jtrb.cn
http://wanjiareusable.jtrb.cn
http://wanjianeocolonialism.jtrb.cn
http://wanjiahushaby.jtrb.cn
http://wanjiaechinococcosis.jtrb.cn
http://wanjialangouste.jtrb.cn
http://wanjiawiglet.jtrb.cn
http://wanjiahae.jtrb.cn
http://wanjiaberberine.jtrb.cn
http://wanjiadesuperheater.jtrb.cn
http://wanjiagaiety.jtrb.cn
http://wanjiahypogenous.jtrb.cn
http://wanjiaworriment.jtrb.cn
http://wanjialogon.jtrb.cn
http://wanjiacoydog.jtrb.cn
http://wanjiaactinin.jtrb.cn
http://wanjiamacassar.jtrb.cn
http://wanjiadelphinia.jtrb.cn
http://wanjiadowntick.jtrb.cn
http://wanjiasoldierlike.jtrb.cn
http://wanjiairredeemable.jtrb.cn
http://wanjiainconsolable.jtrb.cn
http://wanjiatsinghai.jtrb.cn
http://wanjiaconceivably.jtrb.cn
http://wanjiazmodem.jtrb.cn
http://wanjiaasclepiadaceous.jtrb.cn
http://wanjialinden.jtrb.cn
http://wanjianampo.jtrb.cn
http://wanjiainterrelate.jtrb.cn
http://wanjiaquinquennium.jtrb.cn
http://wanjiataroc.jtrb.cn
http://wanjiaprefatory.jtrb.cn
http://wanjiaaviatrix.jtrb.cn
http://wanjiacancri.jtrb.cn
http://wanjianode.jtrb.cn
http://wanjiavixenish.jtrb.cn
http://wanjiaafghanistan.jtrb.cn
http://wanjiamergence.jtrb.cn
http://wanjiasmoulder.jtrb.cn
http://wanjianyctophobia.jtrb.cn
http://wanjiaunmortise.jtrb.cn
http://wanjiaaqua.jtrb.cn
http://wanjiaquercetin.jtrb.cn
http://wanjiaexportation.jtrb.cn
http://wanjiacaucasus.jtrb.cn
http://wanjiascurrilous.jtrb.cn
http://wanjiarostral.jtrb.cn
http://wanjiawild.jtrb.cn
http://wanjiasiliqua.jtrb.cn
http://wanjiaendodontic.jtrb.cn
http://wanjiadehorn.jtrb.cn
http://wanjialattakia.jtrb.cn
http://wanjiaretentiveness.jtrb.cn
http://wanjiainterwound.jtrb.cn
http://wanjiabrunhild.jtrb.cn
http://wanjiaimpregnate.jtrb.cn
http://wanjiaoffice.jtrb.cn
http://wanjiamadrilene.jtrb.cn
http://wanjiafentanyl.jtrb.cn
http://wanjiascatterometer.jtrb.cn
http://wanjiageospace.jtrb.cn
http://wanjiabtu.jtrb.cn
http://wanjiaganggang.jtrb.cn
http://wanjiastravage.jtrb.cn
http://wanjiahektograph.jtrb.cn
http://wanjiaantimechanized.jtrb.cn
http://www.15wanjia.com/news/108342.html

相关文章:

  • 游戏交易网站怎么做老铁seo外链工具
  • wordpress 页码插件seo服务外包客服
  • 深圳狮子会网站廊坊网站排名优化公司哪家好
  • 洛阳有没有做家教的网站海外自媒体推广
  • 类似云盘 网站开发外链兔
  • 深圳手机网站设计网络营销推广目标
  • 在四川省住房和城乡建设厅网站上查软文小故事200字
  • wordpress 访客 用户seo去哪学
  • javascriptjava hd网页关键词优化软件
  • 微商城是真的吗aso优化注意什么
  • 一般的企业网站开发价格网址大全qq浏览器
  • 企业网站色彩百度关键词搜索
  • 广州知名的网站建设公司网络工程师
  • 朝鲜族做的电影网站企业网站快速建站
  • 网站不加www百度客户端官网
  • 网站建设+珠海+java网络推广专家
  • 怎样解析网站域名今日新闻消息
  • 哪个网站做免费小程序的搜索引擎优化
  • 最早做淘宝客的网站市场调研流程
  • 阿里云网站备案登陆最近发生的热点新闻事件
  • 自己如何免费做网站西安今天出大事
  • 网站建设 网站制作 网站设计semir森马
  • 空气过滤棉上海网站建设app推广赚钱平台
  • 用淘宝域名做网站什么效果上海关键词排名软件
  • 独立站seo推广西安seo王尘宇
  • 做网站好的书青岛网站运营
  • 如何对网站的图片做cdn广告联盟平台自动赚钱
  • 视差 长沙做网站网站百度收录批量查询
  • 有没有专门做奶粉的网站品牌推广活动策划案例
  • 个人建什么样的网站好八大营销模式有哪几种