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

江门网站建设多少钱怎么做素材设计网站

江门网站建设多少钱,怎么做素材设计网站,北京游戏网站建设,新网域名管理平台前言 Model#xff1a;负责数据逻辑 View#xff1a;负责视图逻辑 Controller#xff1a;负责业务逻辑 持有关系#xff1a; 1、View 持有 Controller 2、Controller 持有 Model 3、Model 持有 View 辅助工具#xff1a;ViewBinding 执行流程#xff1a;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 version1.0 encodingutf-8? androidx.constraintlayout.widget.ConstraintLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parenttools:context.ui.activity.MVCActivityandroidx.appcompat.widget.Toolbarandroid:idid/toolbarandroid:layout_widthmatch_parentandroid:layout_height48dpapp:layout_constraintLeft_toLeftOfparentapp:layout_constraintRight_toRightOfparentapp:layout_constraintTop_toTopOfparentandroid:backgroundcolor/material_dynamic_primary90app:titleMVC /EditTextandroid:idid/editandroid:layout_widthmatch_parentandroid:layout_height50dpandroid:layout_marginHorizontal16dpapp:layout_constraintLeft_toLeftOfparentapp:layout_constraintRight_toRightOfparentapp:layout_constraintTop_toBottomOfid/toolbar /TextViewandroid:idid/edit_msgandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_marginTop8dpapp:layout_constraintLeft_toLeftOfid/editapp:layout_constraintTop_toBottomOfid/edit /androidx.appcompat.widget.AppCompatButtonandroid:idid/submit_btnandroid:layout_widthmatch_parentandroid:layout_height58dpandroid:layout_marginHorizontal16dpandroid:layout_marginTop8dpandroid:textsubmitandroid:textAllCapsfalseapp:layout_constraintLeft_toLeftOfparentapp:layout_constraintRight_toRightOfparentapp:layout_constraintTop_toBottomOfid/edit_msg /androidx.appcompat.widget.AppCompatButtonandroid:idid/clear_btnandroid:layout_widthmatch_parentandroid:layout_height58dpandroid:layout_marginHorizontal16dpandroid:layout_marginTop8dpandroid:textclearandroid:textAllCapsfalseapp:layout_constraintLeft_toLeftOfparentapp:layout_constraintRight_toRightOfparentapp:layout_constraintTop_toBottomOfid/submit_btn //androidx.constraintlayout.widget.ConstraintLayout 8、源码地址 GitHub - LanSeLianMa/AndroidMVC: Android MVC 写法 9、其他写法 Android MVP 写法-CSDN博客 Android MVVM 写法-CSDN博客
http://www.pierceye.com/news/133729/

相关文章:

  • 网站规划与设计案例网站建设方案设计
  • 漯河网站建设费用成都网站建设重庆最加科技
  • 莱芜 网站wordpress 关闭警告
  • 深圳做棋牌网站建设哪家技术好建设一个网站的规划
  • 网站开发流程比较合理网站已经申请了域名 接下来怎么
  • 校园电商平台网站建设网站网址模板
  • 沈阳有资质做网站的公司温州做网站定制
  • wordpress codex网站seo和sem是什么意思
  • 建网站平台哪家好装修设计软件app排行
  • 网站开发文档撰写企业管理培训课程图片
  • 网站开发公司资质wordpress文章管理模板
  • 建筑网站知识大全江苏有哪些网站建设的公司
  • 江汉网站建设用js做网站登录
  • wordpress做购物网站河南省建设工程造价协会网站
  • wex5可以做网站吗爱射影院网站建设中
  • 网站建设多选题百度文库做好中心网站建设工作总结
  • 网站开发都用phpwordpress文章内图片幻灯片
  • 岳阳网站建设企业绿色大气漂亮dedecms茶叶企业网站
  • 网站建设使用虚拟主机的优点与缺点做百科网站
  • 网站被墙是谁做的电影网站模板
  • 合肥建设网官方网站网页设计网站制作公司
  • 外贸网站建设评价网站的营销方案
  • 邯郸专业做wap网站中国设计网址导航
  • 邯郸移动网站建设价格官方网站车联网是谁做
  • 哪个网站可以做高像素动图个人网站排版设计
  • 多少网站域名采用中文做一个电子商务网站在哪里做
  • 家装设计学校沈阳网站建设优化企业
  • 网站开发公司售后服务触屏端网站开发
  • 建设银行网站注销吗网页制作作品
  • 家具网站建设目的及功能定位网页游戏在哪里制作