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

昆明网站建设平台一念天堂免费观看

昆明网站建设平台,一念天堂免费观看,西安做网站推广,全屋定制十大品牌排行榜目录 一、简介二、使用2.1 使用环境2.2 xml文件绑定数据2.3 数据绑定的对象2.3.1 object2.3.2 ObseravbleField2.3.3 ObseravbleCollection 2.4 绑定数据 三、应用场景 一、简介 DataBinding是谷歌15年推出的library,DataBinding支持双向绑定#xff0c;能大大减少绑定app逻辑… 目录 一、简介二、使用2.1 使用环境2.2 xml文件绑定数据2.3 数据绑定的对象2.3.1 object2.3.2 ObseravbleField2.3.3 ObseravbleCollection 2.4 绑定数据 三、应用场景 一、简介 DataBinding是谷歌15年推出的library,DataBinding支持双向绑定能大大减少绑定app逻辑与layout文件的“胶水代码”例如setText、findViewById等代码。双向绑定指的是将数据与界面绑定起来当数据发生变化时会体现在界面上反过来界面的内容变化也会同步更新到数据上使用DataBinding能轻松实现MVVM模式。 DataBinding的由来 注意: 1.DataBinding只是工具而已并不单独属于某一个模式大部分情况下MVVM都是使用DataBinding小部分情况下MVP情况下也可以使用DataBinding。 2.MVVM模式的VM和JetPack的ViewModel组件库是两回事。 二、使用 2.1 使用环境 首先需要在build.gradle下启用dataBinding android {compileSdk 34defaultConfig {......minSdk 29//启用viewBindingviewBinding{enabled true}//启用dataBinding//第一种方式dataBinding {enabled true}//第二种方式dataBinding.enabledtrue......2.2 xml文件绑定数据 新建布局文件 右击出现提示点击show Context Actions 转换成由DataBinding管理的布局文件 进入布局文件将布局和User关联起来View---Model ?xml version1.0 encodingutf-8?!--layout是由DataBinding管理了我们整个布局 -- layout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsdata!-- 不是通过反射--!-- 生成setuser()函数--variablenameusertypecom.myStudy.jetPackTest.dataBindingTest.User //data!-- 上面的内容是DataBinding内部用的安卓View体系不认识--!-- 安卓 View体系的下面的所有内容会给安卓绘制--LinearLayoutandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationvertical!-- View————Model --TextViewandroid:idid/dataBinding1android:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text{user.name}android:textSize20sp /TextViewandroid:idid/dataBinding2android:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text{user.password}android:textSize20sp //LinearLayout /layout其中变量user作为被绑定的数据type指向对应类 variablenameusertypecom.myStudy.jetPackTest.dataBindingTest.User /属性值通过{}这样的语法表达方式和数据user实现绑定本例中将TextView的text值设置为user对象的name了 android:text{user.name}2.3 数据绑定的对象 DataBinding中有三种不同的数据object、field、collection 2.3.1 object 创建一个Model User 别忘了继承BaseObservable 和注解,BR处可能会报错需要接下来和布局绑定在一起make编译一下方可正常运行。 Observable是提供添加移除监听的一个java接口DataBinding基于此接口提供了一个基础类BaseObserable,可以这样使用它通过Bindale注解绑定一个getter当属性发生改变在setter中发出通知这样就实现了响应 public class User extends BaseObservable {private String name;private String password;public User(String name, String password) {this.name name;this.password password;}Bindable //BR里面标记生成 name数值标记public String getName() {return name;}Bindable //BR里面标记生成 password数值标记public String getPassword() {return password;}public void setName(String name) {this.name name;notifyPropertyChanged(BR.name);//APT技术 BR文件}public void setPassword(String password) {this.password password;notifyPropertyChanged(BR.password);//APT技术 BR文件} }2.3.2 ObseravbleField public static class User2 {public final ObservableFieldString firstName new ObservableField();public final ObservableFieldString lastName new ObservableField();public final ObservableInt age new ObservableInt(); }2.3.3 ObseravbleCollection ObservableArrayMapString, Object user new ObservableArrayMap(); user.put(Name, Google); user.put(password, 123456); user.put(age, 17);对应绑定的xml: dataimport typeandroid.databinding.ObservableMap/variable nameuser typeObservableMapString, Object/ /data … TextViewandroid:text{user[lastName]}android:layout_widthwrap_contentandroid:layout_heightwrap_content/ TextViewandroid:text{String.valueOf(1 (Integer)user[age])}android:layout_widthwrap_contentandroid:layout_heightwrap_content/ObservableArrayListObject user new ObservableArrayList(); user.add(Google); user.add(123456); user.add(17);对应绑定的xml: dataimport typeandroid.databinding.ObservableList/import typecom.example.my.app.Fields/variable nameuser typeObservableListObject/ /data … TextViewandroid:text{user[Fields.LAST_NAME]}android:layout_widthwrap_contentandroid:layout_heightwrap_content/ TextViewandroid:text{String.valueOf(1 (Integer)user[Fields.AGE])}android:layout_widthwrap_contentandroid:layout_heightwrap_content/2.4 绑定数据 创建一个Activity让Use数据驱动UI,Model----View public class DataBindingTestActivity extends AppCompatActivity {User user;Overrideprotected void onCreate(Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);DatabindingtestBinding binding DataBindingUtil.setContentView(this, R.layout.databindingtest);user new User(name, password);binding.setUser(user);//必须要建立联系否则没有任何效果//Model----Viewnew Thread(new Runnable() {Overridepublic void run() {for (int i 0; i 10; i) {try {Thread.sleep(1000);user.setName(user.getName() i);user.setPassword(user.getPassword() i);} catch (InterruptedException e) {throw new RuntimeException(e);}}}}).start();} }测试一下 与Activity绑定xml对比整体示意图 上述内容为DataBinding双向绑定的基础。DataBinding较为繁重普通应用开发完全可以用ViewBinding替代。 DataBinding的优缺点 优点 简化开发DataBinding 可以帮助开发者简化数据与 UI 元素之间的绑定减少手动更新 UI 的工作提高开发效率。减少重复代码通过 DataBinding可以避免编写大量的重复代码来手动更新 UI 元素减少代码量提高代码质量。实时更新DataBinding 可以实现数据与 UI 元素的实时绑定当数据发生变化时UI 会自动更新使得用户界面能够及时展示最新的数据。解耦视图和数据DataBinding 有助于实现视图和数据的解耦使得 UI 层和数据模型层之间的关系更加清晰便于维护和扩展。提高可维护性通过使用 DataBinding可以使代码结构更清晰逻辑更简洁降低代码的耦合度提高代码的可维护性。 缺点学习曲线对于初学者来说DataBinding 技术可能需要一定的学习成本需要掌握相关的概念和用法可能会增加开发的复杂度。性能消耗在某些情况下使用 DataBinding 可能会引入一定的性能消耗特别是在大规模数据绑定和频繁更新 UI 的情况下可能会影响应用的性能。调试困难由于 DataBinding 技术会将数据绑定到 UI 上有时候会使得调试变得困难特别是在数据与 UI 不一致的情况下可能需要花费更多的时间来排查问题。不适用于所有场景DataBinding 并不适用于所有场景有些场景下可能并不需要使用 DataBinding 技术过度使用可能会增加代码复杂度。 三、应用场景 实时数据展示在需要实时展示数据变化的场景下DataBinding 可以帮助实现数据与 UI 的实时绑定使得数据的变化能够即时反映在界面上。例如在股票行情展示、即时通讯应用等场景中都可以应用 DataBinding 技术。 MVVM 架构DataBinding 技术通常与 MVVMModel-View-ViewModel架构一起使用MVVM 架构通过 DataBinding 实现了视图与数据模型的解耦使得界面逻辑更清晰易于维护和扩展。 参考链接 DataBinding使用全面详解 Android开发提升效率之DataBinding——基本使用
http://www.w-s-a.com/news/208114/

相关文章:

  • 哪里有做网站的公司微商怎么开店步骤
  • 访问不了服务器的网站北京工业产品设计公司
  • 怎么棋牌网站建设口碑好的福州网站建设
  • 怎么样注册一个网站南通网站定制搭建
  • 网站免费正能量软件下载wordpress 多本小说
  • 临淄网站制作价格低长沙谷歌seo收费
  • 吴江公司网站建设电话免费的那种软件
  • 大淘客网站如何做seo网络广告设计公司
  • 厦门网络营销顾问湘潭网站seo
  • asp.net个人网站淮南 搭建一个企业展示网站
  • 备案关闭网站wordpress 替换
  • 台州建设网站制作wordpress乱码
  • 互联网时代 网站建设做交互设计的网站
  • 网站屏蔽中文浏览器湘潭做网站广告的公司
  • 好看的单页面网站模板免费下载手机网站经典案例
  • 优秀网站建设平台建筑模板工厂价格尺寸
  • 合肥微信网站建设旅游景区网站模板
  • 一个只做百合的网站wordpress文章和博客的区别
  • 编写网站策划方案网站哪里有
  • 网站做得好的公司国家防疫政策最新调整
  • 设计优秀的企业网站做行测的网站
  • 提供做网站公司有哪些关键词优化诊断
  • 建站合肥网络公司seo免费建手机商城网站吗
  • 设计师投资做项目网站外贸网站建设工作室
  • 无聊的网站wordpress的alt属性插件
  • 个股期权系统网站开发小清新wordpress模板
  • 全中文网站开发建筑公司企业愿景文案
  • 广州网站建设正规公司建设银行信用卡中心网站
  • 哪个网站是专门做封面素材怎么制作app平台
  • 网站开发 平均工资商标注册在哪个部门申请