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

网站构建建设移动网站建设指南

网站构建建设,移动网站建设指南,品牌网站建设 磐石网络官方网站,flash网站源码一、简介 在Vue中使用的是MVVM架构。通过ViewModel可以实现M层和V层数据的双向绑定。Model层的数据发生变化后#xff0c;会自动更新View层UI。UI层数据发生变化#xff08;用户输入#xff09;#xff0c;可以驱动Model层的数据发生变化#xff0c;借助于Vue框架中的View…一、简介 在Vue中使用的是MVVM架构。通过ViewModel可以实现M层和V层数据的双向绑定。Model层的数据发生变化后会自动更新View层UI。UI层数据发生变化用户输入可以驱动Model层的数据发生变化借助于Vue框架中的ViewModel实现数据和UI的双向驱动。 在Android中也想实现数据的双向绑定怎么办呢 JetPack中的DataBinding就充当了ViewModel的角色用来实现数据的双向绑定。 Android app的开发架构从最开始的MVC到MVP到MVVM进一步的解耦。 在Vue中开发者只需维护数据的变化就行数据变化后会自动刷新UI大大提示了开发效率。 Android层面实现MVVM要比在Vue中复杂些需要做的准备工作很多。 在Android中使用DataBinding后不需要再写findVIewById方法也不需要调用VIew的setText 这也就实现了Model层和VIew层的解耦在Vue中也不需要手动操作dom来更新UI。 二、DataBinding在Android中的应用。 1.app项目中开启DataBinding支持默认是关闭的。 builder.gradle ---android节点下配置  dataBinding {enabled true} 2.编写model层代码JavaBean 和编写普通JavaBean除了写get、set方法外有以下不同。 1定义的JavaBean需要继承BaseObservable 类 2在get方法上添加注解BindableDataBinding需要通过注解来解析定义的方法。 3在set方法中添加对应的方法  notifyPropertyChanged(BR.age); notifyPropertyChanged(BR.name); public class User extends BaseObservable {private String name;private String age;Bindablepublic String getName() {return name;}public void setName(String name) {this.name name;notifyPropertyChanged(BR.name);}Bindablepublic String getAge() {return age;}public void setAge(String age) {this.age age;notifyPropertyChanged(BR.age);}Overridepublic String toString() {return User{ name name \ , age age \ };} } BR是注解处理器Annotation Processing Tool简称APT解析JavaBean生成的类和android中的R文件类似。编写完JavaBean之后通过Build生成的类 package com.example.jetpack;public class BR {public static final int User 1;public static final int _all 0;public static final int age 2;public static final int name 3; }通过以上步骤完成了MVVM中model层代码的编写。 3.View层代码的编写。 1在普通的layout布局中按下altenter键选择Convert to data binding layout 把普通的layout转换成 dataBinding规范的layout 转换完之后的样式 1根布局变成了layout。 2多了一个data标签这里面可以定义我们编写的JavaBean类如下 name 定义的是View中引用的字符串可以通过User来获取到里面的值 type定义的是类型 可以是基本类型也可以是自定义类型。 在View中设置值这一步完成了数据与UI的绑定。通过{User.name} TextViewandroid:idid/nameandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text{User.name}android:textColorcolor/blackandroid:textSize16sp /TextViewandroid:idid/ageandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text{User.age}android:textColorcolor/blackandroid:textSize16sp / 2在Activity中 代替常规写法setContentView(R.layout.activity_data_user); 通过DataBindingUtil.setContentView(this, R.layout.activity_data_user);把修改后的layout设置在Activity中返回值是 ActivityDataUserBinding类型他也是通过APT自动生成的类。 ActivityDataUserBinding的实现类就是ActivityDataUserBindingImpl 生成的类名是和定义layout文件名一一对应的。 Activity中完整写法 private User user;private int age 18;private ActivityDataUserBinding dataBinding;Overrideprotected void onCreate(Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState); // setContentView(R.layout.activity_data_user);dataBinding DataBindingUtil.setContentView(this, R.layout.activity_data_user);user new User();user.setAge(String.valueOf(age));user.setName(xiaohua);//通过返回的对象把User对象设置进去没有这一步是无法生效的。dataBinding.setUser(user);findViewById(R.id.set_user).setOnClickListener(v - {//修改user的属性值界面会自动刷新。user.setAge(String.valueOf(age));user.setName(xiaohua);});findViewById(R.id.get_user).setOnClickListener(v - {Log.e(nyz, user user.toString());});} 通过以上步骤就完成了Model到View层的数据绑定数据发生变化后UI自动刷新。 4)DataBinding是如何做到UI发生变化自动更新数据的呢非常简单。 通过{User.name} 可以把获取到的值复制给User.name在Java层可以接受到变化后的值。 这样就完成了View到Model的数据绑定 EditTextandroid:idid/name_etandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text{User.name} /EditTextandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text{User.age} / 具体效果 可以看到调用setValue修改User的name和age时界面中的TextView也跟着更新了做到了数据驱动UI。 当通过修改Edittext中的name和age时TextView中的也更新了这个就是UI变了数据跟着变数据变了UI跟着变。 代码下载 https://download.csdn.net/download/niuyongzhi/88382202
http://www.hkea.cn/news/14532862/

相关文章:

  • 贵阳网站建设网站制作在线玩传奇
  • 网上购物网站建设规划论文免费wordpress申请
  • 餐饮网站建设设计价格网络营销企业案例
  • 网站推广文案怎么写网站前端浏览器兼容如何做
  • 免费建立网站空间网站增加点击率 怎样做
  • 科技医疗网站建设淘宝详情页制作教程
  • 网站主色调有几种我想注册一个做门窗的网站应该怎样做
  • 深圳三站合一网站建设云南建设人力资源网站
  • 教学直播平台网站建设费用免费素材库短视频素材网站
  • 网站建设先进城市郑州网站seo
  • 网站建设可行性报告怎么进入自己网站主机地址
  • 腾虎广州网站建设wordpress记录用户搜索
  • 生活类网站内容建设做网站的公司是什么
  • 南昌网站建设行情自动翻译网站软件
  • 企业做网站怎么做纪检网站建设方案
  • 怎么用织梦制作响应式布局网站织梦网站模板教程
  • 深圳网站建设的公网站安装php
  • 图片1600px做网站代理行业门户网站
  • 深圳网站建设企业一台vps可以做几个网站
  • 青海企业网站建设html图标代码大全
  • 学校网站建设培训方案模板廉江网站建设公司
  • 枣庄住房和城乡建设局网站电商网站怎么做搜索
  • 网站做com合net的区别电子商务网站课程设计总结
  • 外贸网站推广平台姓名logo设计在线生成
  • 网站做自己的超链接无锡谁会建商务网站
  • 哪里有做网站平台云南网站设计
  • html5做个网站多少钱视频网站策划
  • 内网 群晖 wordpressseo排名快速优化
  • 做视频找素材的网站有哪些wordpress 文章所属分类
  • 嘉兴网站制作网页做英文网站 是每个单词首字母大写 还是每段落首字母大写