SlideShare a Scribd company logo
1 of 17
Download to read offline
Data Binding
2015-OCTOBER-2ND
LAY Leangsros
Outline
I. Introduction
II. Using
III. Features
IV. Problems
2
Introduction
What is Data Binding?
- Data binding binds a data model object to a UI elements
- Announced at Google I/O 2015
Model Binding View
3
Introduction
Why do we need it?
- Remove unnecessary code ( add…Listener, findViewById, setText)
- Aid Memory Management
- Value code quality
4
Introduction
Why do we need it?
- Remove unnecessary code ( add..Listener, findViewById, setText)
5
@Override
public void onBindViewHolder(MyViewHolder holder, final int position) {
holder.getmItemBinding().setUser(mUserList.get(position));
holder.getmItemBinding().executePendingBindings();
}
@Override
public void onBindViewHolder(MyViewHolder holder, final int position) {
holder.name.setText(..);
holder.age.setText(..);
...
}
N
1
Introduction
Why do we need it?
- Aid Memory Management
- Value code quality
6
Using
What do we need?
- Minimum API-level 7 (2.1)
- Android Studio 1.3.0 or higher
- Add library in root build.gradle
- Apply plugin in build.gradle app
dependencies {
..
classpath "com.android.databinding:dataBinder:1.0-rc1"
}
apply plugin: 'com.android.databinding'
7
Using
How do we use?
- Preparing the Model
- Preparing the Layout
- Connect Model and Layout in your activity
8
Using
How do we use?
9
User.java MainActivity.java
ExampleLayoutBinding
Handler.java
ExampleLayoutBinding.java
public void setHandler(Handler handler);
public void setUser(User user);
…….
example_layout.xml
handler
user
Using
How do we use?
10
public class User extends BaseObservable{
public String name;
public int age;
//Setter and Getter
}
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable name="user" type="com.dmi.bindingview.User"/>
</data>
<RelativeLayout
......
<TextView
......
android:text="@{user.name}"/>
</RelativeLayout>
</layout>
private ActivityMainBinding mBinding;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);
mBinding.setUser(mUser);
}
}
User.java
activity_main.xml
MainActivity.class
Features
More Features
- Imports Classes
- Supporting Resources
- Expression Languages
11
Features
More Features
- Imports Classes
12
..
<layout
..
<data>
<import type="android.view.View"/>
<variable name="user" type="com.dmi.bindingview.User"/>
</data>
<LinearLayout
.. >
<TextView
..
android:visibility="@{user.age>20 ? View.VISIBLE : View.GONE}"/>
</LinearLayout>
</layout>
Features
More Features
- Supporting Resources
13
android:text="@{@string/nameFormat(firstName, lastName)}"
android:text="@{@plurals/banana(bananaCount)}"
android:padding="@{@dimen/largePadding}"
android:textColor="@{@color/red}"
Features
More Features
- Expression Languages
14
• Mathematical + - / * %
• String concatenation +
• Logical && ||
• Binary & | ^
• Unary + - ! ~
• Shift >> >>> <<
• Comparison == > < >= <=
• instanceof
• Grouping ()
• Literals - character, String, numeric, null
• Cast
• Method calls
• Field access
• Array access []
• Ternary operator ?:
It is like Java expressions
Problems
Current Problems
- IDE-Support currently poor
* Error indicated, but it compiles and works
* No code completion in layout
- API not stable, it is in beta.
15
Demo
16
References
17
- Documentation: https://developer.android.com/tools/data-binding/guide.html
- Android Data Binding - Christopher Schott / Florian Fetzer: https://droidcon.gitbooks.io/2015-berlin-
barcamp/content/android_data_binding_-_christopher_schott__florian_fetzer.html
- Import : http://catinean.com/2015/05/31/how-you-can-go-wrong-with-the-new-data-binding-api/
- Google I/O 2015 - What's new in Android (13th min) : https://www.youtube.com/watch?v=ndBdf1_oOGA

More Related Content

What's hot

What's hot (20)

(Fast) Introduction to HTML & CSS
(Fast) Introduction to HTML & CSS (Fast) Introduction to HTML & CSS
(Fast) Introduction to HTML & CSS
 
Introduction to ajax
Introduction  to  ajaxIntroduction  to  ajax
Introduction to ajax
 
Model View Controller (MVC)
Model View Controller (MVC)Model View Controller (MVC)
Model View Controller (MVC)
 
Chapter 3: ado.net
Chapter 3: ado.netChapter 3: ado.net
Chapter 3: ado.net
 
Polymorphism in java
Polymorphism in javaPolymorphism in java
Polymorphism in java
 
MVC ppt presentation
MVC ppt presentationMVC ppt presentation
MVC ppt presentation
 
Hibernate ppt
Hibernate pptHibernate ppt
Hibernate ppt
 
ADO.NET
ADO.NETADO.NET
ADO.NET
 
OOP with Java - Continued
OOP with Java - Continued OOP with Java - Continued
OOP with Java - Continued
 
Object-oriented Programming-with C#
Object-oriented Programming-with C#Object-oriented Programming-with C#
Object-oriented Programming-with C#
 
Document Object Model
Document Object ModelDocument Object Model
Document Object Model
 
Introduction to ADO.NET
Introduction to ADO.NETIntroduction to ADO.NET
Introduction to ADO.NET
 
Cheat Sheet java
Cheat Sheet javaCheat Sheet java
Cheat Sheet java
 
Java database connectivity
Java database connectivityJava database connectivity
Java database connectivity
 
HTML CSS Basics
HTML CSS BasicsHTML CSS Basics
HTML CSS Basics
 
JavaScript - Chapter 8 - Objects
 JavaScript - Chapter 8 - Objects JavaScript - Chapter 8 - Objects
JavaScript - Chapter 8 - Objects
 
Angular Directives
Angular DirectivesAngular Directives
Angular Directives
 
Jdbc
JdbcJdbc
Jdbc
 
Html / CSS Presentation
Html / CSS PresentationHtml / CSS Presentation
Html / CSS Presentation
 
Vectors in Java
Vectors in JavaVectors in Java
Vectors in Java
 

Viewers also liked

15. session 15 data binding
15. session 15   data binding15. session 15   data binding
15. session 15 data bindingPhúc Đỗ
 
DHTML - Events & Buttons
DHTML - Events  & ButtonsDHTML - Events  & Buttons
DHTML - Events & ButtonsDeep Patel
 
Dynamic positioning
Dynamic positioningDynamic positioning
Dynamic positioningZaw Aung
 

Viewers also liked (6)

15. session 15 data binding
15. session 15   data binding15. session 15   data binding
15. session 15 data binding
 
DHTML - Events & Buttons
DHTML - Events  & ButtonsDHTML - Events  & Buttons
DHTML - Events & Buttons
 
Dynamic positioning
Dynamic positioningDynamic positioning
Dynamic positioning
 
Dhtml sohaib ch
Dhtml sohaib chDhtml sohaib ch
Dhtml sohaib ch
 
Dhtml
DhtmlDhtml
Dhtml
 
Dynamic HTML (DHTML)
Dynamic HTML (DHTML)Dynamic HTML (DHTML)
Dynamic HTML (DHTML)
 

Similar to Data Binding

Effective Android Data Binding
Effective Android Data BindingEffective Android Data Binding
Effective Android Data BindingEric Maxwell
 
Data binding в массы! (1.2)
Data binding в массы! (1.2)Data binding в массы! (1.2)
Data binding в массы! (1.2)Yurii Kotov
 
"Android Data Binding в массы" Михаил Анохин
"Android Data Binding в массы" Михаил Анохин"Android Data Binding в массы" Михаил Анохин
"Android Data Binding в массы" Михаил АнохинFwdays
 
Михаил Анохин "Data binding 2.0"
Михаил Анохин "Data binding 2.0"Михаил Анохин "Data binding 2.0"
Михаил Анохин "Data binding 2.0"Fwdays
 
Will your code blend? : Toronto Code Camp 2010 : Barry Gervin
Will your code blend? : Toronto Code Camp 2010 : Barry GervinWill your code blend? : Toronto Code Camp 2010 : Barry Gervin
Will your code blend? : Toronto Code Camp 2010 : Barry GervinBarry Gervin
 
Data Binding - Android by Harin Trivedi
Data Binding - Android by Harin TrivediData Binding - Android by Harin Trivedi
Data Binding - Android by Harin Trivediharintrivedi
 
07_UIAndroid.pdf
07_UIAndroid.pdf07_UIAndroid.pdf
07_UIAndroid.pdfImranS18
 
MVVM & Data Binding Library
MVVM & Data Binding Library MVVM & Data Binding Library
MVVM & Data Binding Library 10Clouds
 
Struts 2 + Spring
Struts 2 + SpringStruts 2 + Spring
Struts 2 + SpringBryan Hsueh
 
Data binding в массы!
Data binding в массы!Data binding в массы!
Data binding в массы!Artjoker
 
Modern frontend development with VueJs
Modern frontend development with VueJsModern frontend development with VueJs
Modern frontend development with VueJsTudor Barbu
 
Asp.net mvc training
Asp.net mvc trainingAsp.net mvc training
Asp.net mvc trainingicubesystem
 
Android data binding
Android data bindingAndroid data binding
Android data bindingAjit Singh
 
Angular Directives from Scratch
Angular Directives from ScratchAngular Directives from Scratch
Angular Directives from ScratchChristian Lilley
 
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJSAngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJSmurtazahaveliwala
 

Similar to Data Binding (20)

Data binding w Androidzie
Data binding w AndroidzieData binding w Androidzie
Data binding w Androidzie
 
Effective Android Data Binding
Effective Android Data BindingEffective Android Data Binding
Effective Android Data Binding
 
Data binding в массы! (1.2)
Data binding в массы! (1.2)Data binding в массы! (1.2)
Data binding в массы! (1.2)
 
"Android Data Binding в массы" Михаил Анохин
"Android Data Binding в массы" Михаил Анохин"Android Data Binding в массы" Михаил Анохин
"Android Data Binding в массы" Михаил Анохин
 
Михаил Анохин "Data binding 2.0"
Михаил Анохин "Data binding 2.0"Михаил Анохин "Data binding 2.0"
Михаил Анохин "Data binding 2.0"
 
Will your code blend? : Toronto Code Camp 2010 : Barry Gervin
Will your code blend? : Toronto Code Camp 2010 : Barry GervinWill your code blend? : Toronto Code Camp 2010 : Barry Gervin
Will your code blend? : Toronto Code Camp 2010 : Barry Gervin
 
Data Binding - Android by Harin Trivedi
Data Binding - Android by Harin TrivediData Binding - Android by Harin Trivedi
Data Binding - Android by Harin Trivedi
 
07_UIAndroid.pdf
07_UIAndroid.pdf07_UIAndroid.pdf
07_UIAndroid.pdf
 
MVVM & Data Binding Library
MVVM & Data Binding Library MVVM & Data Binding Library
MVVM & Data Binding Library
 
Struts 2 + Spring
Struts 2 + SpringStruts 2 + Spring
Struts 2 + Spring
 
Data binding в массы!
Data binding в массы!Data binding в массы!
Data binding в массы!
 
Korhan bircan
Korhan bircanKorhan bircan
Korhan bircan
 
Compose In Practice
Compose In PracticeCompose In Practice
Compose In Practice
 
Modern frontend development with VueJs
Modern frontend development with VueJsModern frontend development with VueJs
Modern frontend development with VueJs
 
Asp.net mvc training
Asp.net mvc trainingAsp.net mvc training
Asp.net mvc training
 
Asp.NET MVC
Asp.NET MVCAsp.NET MVC
Asp.NET MVC
 
.Net template solution architecture
.Net template solution architecture.Net template solution architecture
.Net template solution architecture
 
Android data binding
Android data bindingAndroid data binding
Android data binding
 
Angular Directives from Scratch
Angular Directives from ScratchAngular Directives from Scratch
Angular Directives from Scratch
 
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJSAngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
 

Data Binding

  • 2. Outline I. Introduction II. Using III. Features IV. Problems 2
  • 3. Introduction What is Data Binding? - Data binding binds a data model object to a UI elements - Announced at Google I/O 2015 Model Binding View 3
  • 4. Introduction Why do we need it? - Remove unnecessary code ( add…Listener, findViewById, setText) - Aid Memory Management - Value code quality 4
  • 5. Introduction Why do we need it? - Remove unnecessary code ( add..Listener, findViewById, setText) 5 @Override public void onBindViewHolder(MyViewHolder holder, final int position) { holder.getmItemBinding().setUser(mUserList.get(position)); holder.getmItemBinding().executePendingBindings(); } @Override public void onBindViewHolder(MyViewHolder holder, final int position) { holder.name.setText(..); holder.age.setText(..); ... } N 1
  • 6. Introduction Why do we need it? - Aid Memory Management - Value code quality 6
  • 7. Using What do we need? - Minimum API-level 7 (2.1) - Android Studio 1.3.0 or higher - Add library in root build.gradle - Apply plugin in build.gradle app dependencies { .. classpath "com.android.databinding:dataBinder:1.0-rc1" } apply plugin: 'com.android.databinding' 7
  • 8. Using How do we use? - Preparing the Model - Preparing the Layout - Connect Model and Layout in your activity 8
  • 9. Using How do we use? 9 User.java MainActivity.java ExampleLayoutBinding Handler.java ExampleLayoutBinding.java public void setHandler(Handler handler); public void setUser(User user); ……. example_layout.xml handler user
  • 10. Using How do we use? 10 public class User extends BaseObservable{ public String name; public int age; //Setter and Getter } <layout xmlns:android="http://schemas.android.com/apk/res/android"> <data> <variable name="user" type="com.dmi.bindingview.User"/> </data> <RelativeLayout ...... <TextView ...... android:text="@{user.name}"/> </RelativeLayout> </layout> private ActivityMainBinding mBinding; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mBinding = DataBindingUtil.setContentView(this, R.layout.activity_main); mBinding.setUser(mUser); } } User.java activity_main.xml MainActivity.class
  • 11. Features More Features - Imports Classes - Supporting Resources - Expression Languages 11
  • 12. Features More Features - Imports Classes 12 .. <layout .. <data> <import type="android.view.View"/> <variable name="user" type="com.dmi.bindingview.User"/> </data> <LinearLayout .. > <TextView .. android:visibility="@{user.age>20 ? View.VISIBLE : View.GONE}"/> </LinearLayout> </layout>
  • 13. Features More Features - Supporting Resources 13 android:text="@{@string/nameFormat(firstName, lastName)}" android:text="@{@plurals/banana(bananaCount)}" android:padding="@{@dimen/largePadding}" android:textColor="@{@color/red}"
  • 14. Features More Features - Expression Languages 14 • Mathematical + - / * % • String concatenation + • Logical && || • Binary & | ^ • Unary + - ! ~ • Shift >> >>> << • Comparison == > < >= <= • instanceof • Grouping () • Literals - character, String, numeric, null • Cast • Method calls • Field access • Array access [] • Ternary operator ?: It is like Java expressions
  • 15. Problems Current Problems - IDE-Support currently poor * Error indicated, but it compiles and works * No code completion in layout - API not stable, it is in beta. 15
  • 17. References 17 - Documentation: https://developer.android.com/tools/data-binding/guide.html - Android Data Binding - Christopher Schott / Florian Fetzer: https://droidcon.gitbooks.io/2015-berlin- barcamp/content/android_data_binding_-_christopher_schott__florian_fetzer.html - Import : http://catinean.com/2015/05/31/how-you-can-go-wrong-with-the-new-data-binding-api/ - Google I/O 2015 - What's new in Android (13th min) : https://www.youtube.com/watch?v=ndBdf1_oOGA