`
DavyJones2010
  • 浏览: 154143 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Flex: DataBinding in depth (Part Three)

    博客分类:
  • Flex
阅读更多

1. Normal Data Binding for VO

 

package vo
{
	[Bindable]
	public class Student
	{
		public var id:int;
		public var name:String;
		public var gender:String;
		public function Student(id:int, name:String, gender:String)
		{
			this.id = id;
			this.name = name;
			this.gender = gender;
		}
	}
}

 

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
	<fx:Declarations>
		<!-- Place non-visual elements (e.g., services, value objects) here -->
	</fx:Declarations>
	
	<fx:Script>
		<![CDATA[
			import mx.controls.Alert;
			
			import vo.Student;
			[Bindable]
			private var student:Student = new Student(1, "Davy", "Male");
		
			private function handler(event:MouseEvent):void
			{
				student.id ++;
			}
		]]>
	</fx:Script>
	<s:Button label="{student.id}" click="handler(event)"/>
</s:Application>

     Comment:

        1) Every time we click the button, both the button label and the student.id will change accordingly.

        2) If we leave out the [Bindable] annotation for student in Application domain, we will get a warning but it still works.

        3) If we leave out the [Bindable] annotation for id in VO and we add this on var student, it will not work cause the id is not bindable.

 

 

2. Binding all properties for MXML

<fx:Metadata>
       [Bindable]
</fx:Metadata>

 

    Comment:

         1) Why it doesn't work?

 

3. Binding Using ObjectProxy

        1) Why using ObjectProxy?

               We using ObjectProxy to monitor the properties changes in our custom VO.

               In the previous charpter, we are using the custom event dispatched to monitor a specific attribute in our custom VO. But what if we want to monitor all the property changes in VO?

        2) How to use ObjectProxy?

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" 
			   creationComplete="setWatcher(event);"
			   minWidth="955" minHeight="600">
	<fx:Declarations>
		<!-- Place non-visual elements (e.g., services, value objects) here -->
	</fx:Declarations>
	
	<fx:Script>
		<![CDATA[
			import mx.controls.Alert;
			import mx.events.PropertyChangeEvent;
			import mx.utils.ObjectProxy;
			
			import vo.Student;
			
			private var student:Student = new Student(1, "Davy", "Male");
			private var objectProxy:ObjectProxy;
			
			private function setWatcher(event:Event):void
			{
				objectProxy = new ObjectProxy(student);
				objectProxy.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, onChange);
				
				objectProxy.id = 2;
				objectProxy.name = "Clay";
				objectProxy.gender = "Female";
			}
			private function onChange(event:Event):void
			{
				idLabel.text = objectProxy.id.toString();
			}
		]]>
	</fx:Script>
	
	<s:Label id="idLabel"/>
</s:Application>

 

package vo
{
	public class Student
	{
		public var id:int;
		public var name:String;
		public var gender:String;
		public function Student(id:int, name:String, gender:String)
		{
			this.id = id;
			this.name = name;
			this.gender = gender;
		}
	}
}

     Comment:

        1) Pay attention while changing the attribute, we are not changing that of VO's but changing that of ObjectProxy's.

        2) It works the same as we add [Bindable] annotation to all attributes in Student/Vo.

分享到:
评论

相关推荐

    Android代码-使用DataBinding的RecyclerView

    Android Data Binding RecyclerView Using Recyclerview with the new Android Data Binding framework. ... dataBinding { enabled = true } Modify your layout Remember to use your classes and packages ;-).

    DataBinding-ktx:DataBinding-ktx使声明数据绑定变得容易

    DataBinding-ktx使声明数据绑定变得容易。 在这里。 数据绑定中的问题 忘记在DataBinding中调用setLifecycleOwner 。 在Activity和Fragment中声明binding变量的方式有所不同。 在活动中,可以使用by lazy声明...

    DataBinding基本使用

    数据绑定(DataBinding)是Android开发中的一个库,它提供了在布局XML文件中直接与Java对象绑定的能力,简化了UI和业务逻辑之间的交互。通过DataBinding,开发者可以更直观地处理用户界面的数据更新,减少代码量,...

    DataBinding的使用与原理

    **DataBinding 概述** DataBinding 是 Android 开发中的一个库,它允许开发者将数据模型直接绑定到用户界面,从而简化了代码,提高了可读性和可维护性。这个框架是 Android 支持库的一部分,引入 DataBinding 可以...

    :dna:Android DataBinding工具包,用于通知数据从模型层到UI层的更改。-Android开发

    :dna:Android DataBinding套件,用于通知MVVM架构上从Model层到UI层的数据更改。 Bindables:dna:Android DataBinding工具包,用于通知从模型层到UI层的数据更改。 该库提供了DataBinding的基类(BindingActivity,...

    DataBinding使用Android

    以下是一个简单的例子,展示如何在布局中使用DataBinding: ```xml &lt;layout xmlns:android="http://schemas.android.com/apk/res/android"&gt; name="user" type="com.example.User" /&gt; ...&gt; android:...

    Android代码-DataBindingAdapter

    DataBinding RecyclerViewAdapter 中文版 README Free from writing adapters! NO MORE CLASSES! Super simple RecyclerView adapter using Data Binding Technology, no longer need to write any adapter! You don...

    DataBindingDemo2

    在Android开发中,DataBinding是一种强大的工具,它简化了UI与数据模型之间的交互,使得代码更加清晰、可读性更强。这个"DataBindingDemo2"是基于MVVM(Model-View-ViewModel)架构模式的一个示例,展示了如何在实际...

    Android支持DataBinding的RecyclerView通用Adapter

    总结起来,"Android支持DataBinding的RecyclerView通用Adapter"是一个高效的解决方案,它整合了`DataBinding`的便利性和`BRVAH`的实用性,为开发者提供了一个强大且易用的工具,帮助他们更好地管理和展示列表数据。...

    DataBindingDemo

    《Android DataBinding 深入解析与实战指南》 在Android开发中,DataBinding库提供了一种强大的方式来简化UI和数据模型之间的交互,极大地提高了代码的可读性和可维护性。本文将深入探讨DataBinding的功能、优势...

    DataBinding的探索

    在Android开发中,DataBinding库是Google推荐的一种用于简化视图和数据模型之间绑定的技术,它使得MVVM(Model-View-ViewModel)架构模式在Android应用中的实现更加便捷。本篇文章将深入探讨DataBinding的工作原理、...

    cxf-rt-databinding-jaxb-3.0.1-API文档-中文版.zip

    赠送jar包:cxf-rt-databinding-jaxb-3.0.1.jar; 赠送原API文档:cxf-rt-databinding-jaxb-3.0.1-javadoc.jar; 赠送源代码:cxf-rt-databinding-jaxb-3.0.1-sources.jar; 赠送Maven依赖信息文件:cxf-rt-...

    绑定:简单的API实现DataBinding和ViewBinding。简单的API实现DataBinding和ViewBinding,欢迎star

    在Android开发中,数据绑定(DataBinding)和视图绑定(ViewBinding)是两种非常重要的技术,它们可以显著提升代码的可读性和可维护性,减少样板代码,并增强UI组件与业务逻辑之间的交互。本项目提供了简单的API实现...

    Android开发:10.DataBinding数据绑定技术解析.pdf

    Android开发:10.DataBinding数据绑定技术解析.pdf

    Android-一些DataBinding相关的工具类

    在Android开发中,DataBinding库是一个非常重要的组件,它能够帮助开发者更加简洁、高效地处理UI与数据之间的绑定。这个名为"Android-一些DataBinding相关的工具类"的资源集,显然是为了提供一些辅助方法和扩展,以...

    DataBinding中ViewStub例子

    在Android开发中,DataBinding库是Google推荐的一种用于简化视图和数据绑定的工具,它极大地减少了我们在Activity或Fragment中处理UI逻辑的代码量。ViewStub是一个轻量级的视图,它在默认情况下不可见,只有在被...

    Bindables::dna:Android DataBinding套件,用于通知MVVM架构上从Model层到UI层的数据更改

    :dna: Android DataBinding工具包,用于通知数据从模型层到UI层的更改。 该库提供了DataBinding的基类(BindingActivity,BindingFragment,BindingViewModel), 并支持在没有可观察字段和LiveData的情况下通知...

    DataBinding2使用手册

    ### DataBinding2使用手册 #### 一、简介 DataBinding2是基于JQuery的一个扩展库,主要用于简化HTML元素与后端数据之间的绑定过程。相比于早期版本,DataBinding2增加了许多新特性,使得开发者能够更加高效地处理...

    Instant-Weather:使用 MVVM 模式、Retrofit2、Dagger2、LiveData、ViewModel、Coroutines、Room、Navigation Components、Data Binding 和来自 Android Jetpack 的一些其他库实现的 Android 天气应用程序

    即时天气 :sun_behind_cloud: 使用 MVVM 模式、Retrofit2、Dagger2、LiveData、ViewModel、Coroutines、Room、Navigation Components、Data Binding 和来自一些其他库实现的 Android 天气应用程序。...

Global site tag (gtag.js) - Google Analytics