SlideShare a Scribd company logo
1 of 67
Download to read offline
Deep dive into
Android Data Binding
+RadoslawPiekarz
@radzio
Radosław Piekarz
Head of Mobile at Tango Agency
droidconde2016
talixo.de
10 € discount
Basics
How it works?
Lambdas
Two-Way data binding
New stuff announced during Google IO 2016
Dos and don'ts
MVVM & TDD
Summary
Basics
How it works?
Lambdas
Two-Way data binding
New stuff announced during Google IO 2016
Dos and don'ts
MVVM & TDD
Summary
Setup
// <app-module>/build.gradle
apply plugin: "com.android.application"
android {
dataBinding {
enabled = true
}
}
Changes in layout file
<layout
xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/my_id"/>
</layout>
Changes in Activity / Fragment code
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
MainActivityBinding binding = DataBindingUtil
.setContentView(this, R.layout.main_activity);
binding.myId.setText("John Doe")
}
Type safe!
Binding utils
DataBindingUtil.setContentView(activity, layoutId);
DataBindingUtil.inflate(inflater, layoutId, parent, attachToParrent);
ListItemBinding binding = ListItemBinding.bind(viewRoot);
Use for activities
Use for any view
Bind view that was
already inflated
Changes in layout file
<layout
xmlns:android="http://schemas.android.com/apk/res/android">
<data class="CustomClassName">
<variable name="user" type="com.example.User"/>
</data>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@{user.firstName}" />
</layout>
Changes in Activity / Fragment Code
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
binding = DataBindingUtil
.setContentView(this, R.layout.main_activity);
binding.setUser(new User());
}
Binding expression operators
Grouping ()
Literals character, String,
numeric, null
Method calls, field access
Ternary operator ?:
Array access []
Null coalescing operator ??
Mathematical + - / * %
String concatenation +
Logical && ||
Binary & | ^
Unary + - ! ~
Shift >> >>> <<
Comparison == > < >= <=
instanceof, cast
Binding expression operators
android:text="@{user.displayName ?? user.lastName}"
android:text="@{user.displayName != null ? user.displayName : user.lastName}"
=
Notifying view #1
public class User extends BaseObservable {
private String firstName;
public User(String firstName) {
this.firstName = firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
notifyPropertyChanged(BR.firstName);
}
@Bindable
public String getFirstName() {
return this.firstName;
}
}
Notifying view #2
public class User {
public final ObservableField<String> firstName;
public User(String name) {
this.firstName = new ObservableField<>(firstName);
}
public void setName(String firstName) {
this.firstName.set(firstName);
}
}
Observable fields & collections
Observable<T>
ObservableBoolean
ObservableByte
ObservableChar
ObservableShort
ObservableInt
ObservableLong
ObservableFloat
ObservableDouble
ObservableParcelable<T>
ObservableList<T>
ObservableArrayList<T>
ObservableMap<K, V>
ObservableArrayMap<K, V>
Binding Adapters
<layout>
<ImageView
bind:imageUrl="@{viewModel.someNiceImageUrl}"
bind:error="@{@drawable/defaultImage}"/>
</layout>
@BindingAdapter({"bind:imageUrl", "bind:error"})
public static void loadImage(ImageView view, String url, Drawable error)
{
Picasso.with(view.getContext()).load(url).error(error).into(view);
}
Binding Adapters
@BindingAdapter({"bind:imageUrl", "bind:error"})
public static void loadImage(ImageView view, String url, Drawable error)
{
Picasso.with(view.getContext()).load(url).error(error).into(view);
}
java.lang.IllegalStateException
Required DataBindingComponent is null. If you don't use an inflation
method taking a DataBindingComponent, use
DataBindingUtil.setDefaultComponent or make all BindingAdapter
methods static.
Binding Component
public class MyDataBindingCoponent implements DataBindingComponent
{
public EditTextBindings getEditTextBindings()
{
return new EditTextBindings();
}
}
Binding Component
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
binding = DataBindingUtil
.setContentView(this,
R.layout.activity_main,
new MyDataBindingCoponent());
binding.setViewModel(new ViewModel());
}
Binding Conversions
android:background="@{isError ? @color/red : @color/white}"
@BindingConversion
public static ColorDrawable convertColorToDrawable(int color) {
return new ColorDrawable(color);
}
Binding methods
@BindingMethods({
@BindingMethod(type = CircularProgressBar.class,
attribute = "progressText", method = "setProgressMessage")
})
public class ViewBindings
{
}
RecyclerView bindings
https://github.com/radzio/android-data-binding-recyclerview
Talk is cheap. Show me the code
RecyclerView Binding #1
<android.support.v7.widget.RecyclerView
android:id="@+id/activity_users_recycler"
android:scrollbars="vertical"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
app:items="@{usersViewModel.users}"
app:itemViewBinder="@{view.itemViewBinder}"
/>
RecyclerView Binding #2
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
usersViewModel = new UsersViewModel();
usersViewModel.users
.add(new SuperUserViewModel(new User("Android", "Dev")));
binding = DataBindingUtil.setContentView(this, R.layout.users_view);
binding.setUsersViewModel(usersViewModel);
binding.setView(this);
}
RecyclerView Binding #3
public class UsersViewModel extends BaseObservable
{
@Bindable
public ObservableArrayList<UserViewModel> users;
public UsersViewModel()
{
this.users = new ObservableArrayList<>();
}
public void addUser(String name, String surname)
{
this.users.add(new UserViewModel(new User(name, surname)));
}
}
RecyclerView Binding #4
public ItemBinder<UserViewModel> itemViewBinder()
{
return new CompositeItemBinder<UserViewModel>(
new SuperUserBinder(BR.user, R.layout.item_super_user),
new UserBinder(BR.user, R.layout.item_user)
);
}
Basics
How it works?
Lambdas
Two-Way data binding
New stuff announced during Google IO 2016
Dos and don'ts
MVVM & TDD
Summary
How it works?
Bind ViewModel to
View
Register for
property change
callbacks
Trigger
notifyPropertyChanged
Request rebind
Execute pending
bindings
User input or from
code
How it works?
public void setViewModel(TwoWayViewModel viewModel) {
updateRegistration(0, viewModel);
this.mViewModel = viewModel;
synchronized(this) {
mDirtyFlags |= 0x1L;
notifyPropertyChanged(BR.viewModel);
super.requestRebind();
}
How it works?
@Override
protected void executeBindings() {
long dirtyFlags = 0;
synchronized(this) {
dirtyFlags = mDirtyFlags;
mDirtyFlags = 0;
}
if ((dirtyFlags & 0x7L) != 0) {
if (viewModel != null) {
colorViewModel = viewModel.getColor();
}
if ((dirtyFlags & 0x7L) != 0) {
ColorPickerViewBindings.setColor(this.colorpicker, colorViewModel);
EditTextBindings.setText(this.mboundView2, colorViewModel);
}
if ((dirtyFlags & 0x4L) != 0) {
ColorPickerViewBindings.setColorListener(this.colorpicker, null, colorpickercolorAttr);
TextViewBindingAdapter.setTextWatcher(this.mboundView2, null, null, null, mboundView2androidTe);
this.mboundView3.setOnClickListener(mCallback2);
}
}
Basics
How it works?
Lambdas
Two-Way data binding
New stuff announced during Google IO 2016
Dos and don'ts
MVVM & TDD
Summary
Lambdas
<Button
android:onClick="@{() -> viewModel.sendAction()}
/>
public class MainViewModel extends BaseObservable
{
public void sendAction()
{
//code
}
}
Method References
<Button
android:onClick="@{viewModel::sendAction}"
/>
public class MainViewModel extends BaseObservable
{
public void sendAction(View view)
{
//code
}
}
Basics
How it works?
Lambdas
Two-Way data binding
New stuff announced during Google IO 2016
Dos and don'ts
MVVM & TDD
Summary
Two-Way data binding
<layout>
...
<LinearLayout>
<EditText
android:text="@{viewModel.twoWayText}"
/>
</LinearLayout>
</layout>
Two-Way data binding
<layout>
...
<LinearLayout>
<EditText
android:text="@={viewModel.twoWayText}"
/>
</LinearLayout>
</layout>
Two-Way data binding
classpath 'com.android.tools.build:gradle:2.1.0-alpha3'// or above
Views with Two-Way Binding support
• AbsListView -> android:selectedItemPosition
• CalendarView -> android:date
• CompoundButton -> android:checked
• DatePicker -> android:year, android:month, android:day
• NumberPicker -> android:value
• RadioGroup -> android:checkedButton
• RatingBar -> android:rating
• SeekBar -> android:progres
• TabHost -> android:currentTab
• TextView -> android:text
• TimePicker -> android:hour, android:minute
What about custom views?
NO PROBLEM!
Two-Way data binding
@InverseBindingAdapter(attribute = "color", event = "colorAttrChanged")
public static int getColor(ColorPickerView view)
{
return view.getColor();
}
attribute + AttrChanged
Activity
@BindingAdapter("colorAttrChanged")
public static void setColorListener(ColorPickerView view,
final InverseBindingListener colorChange)
{
if (colorChange == null)
{
view.setOnColorChangedListener(null);
}
else
{
view.setOnColorChangedListener(new OnColorChangedListener()
{
@Override
public void onColorChanged(int newColor)
{
colorChange.onChange();
}
});
}
}
Two-Way data binding
@BindingAdapter("color")
public static void setColor(ColorPickerView view, int color)
{
if (color != view.getColor())
{
view.setColor(color);
}
}
Avoiding cycles
Two-Way data binding
public class TwoWayViewModel extends BaseObservable
{
private int color;
public void setColor(int color)
{
this.color = color;
this.notifyPropertyChanged(BR.color);
}
@Bindable
public int getColor()
{
return this.color;
}
}
Two-Way data binding
public class TwoWayBindingActivity extends AppCompatActivity
{
private ActivityTwoWayBinding binding;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this, R.layout.activity_two_way);
binding.setViewModel(new TwoWayViewModel());
}
}
Two-Way data binding
<LinearLayout>
<com.github.danielnilsson9.colorpickerview.view.ColorPickerView
bind:color="@={viewModel.color}"
/>
<EditText
android:text="@={viewModel.color}"
/>
<Button
android:text="Set defined color"
android:onClick="@{() -> viewModel.setColor(Color.parseColor(`#C97249`))}"
/>
</LinearLayout>
Basics
How it works?
Lambdas
Two-Way data binding
New stuff announced during Google IO 2016
Dos and don'ts
MVVM & TDD
Summary
Special Variables
<TextView
android:id="@+id/tv_congrats"
/>
<Button
android:onClick="@{() -> clickHandler.clicked(tvCongrats)}"
/>
<TextView
android:text="@{TextService.load(context, myModel)}"
/>
Context
View IDs
Implied Event Updates
<CheckBox
android:id="@+id/cb_show_more"
/>
<TextView
android:visibility="@{cbShowMore.checked ? View.VISIBLE : View.GONE}"
/>
Repeated expressions
<TextView
android:id="@+id/tv_congrats"
android:visibility="@{cbShowMore.checked ? View.VISIBLE : View.GONE}"
/>
<TextView
android:visibility="@{cbShowMore.checked ? View.VISIBLE : View.GONE}"
/>
<TextView
android:visibility="@{cbShowMore.checked ? View.VISIBLE : View.GONE}"
/>
Repeated expressions
<TextView
android:id="@+id/tv_congrats"
android:visibility="@{cbShowMore.checked ? View.VISIBLE : View.GONE}"
/>
<TextView
android:visibility="@{tvCongrats.visibility}"
/>
<TextView
android:visibility="@{tvCongrats.visibility}"
/>
Basics
How it works?
Lambdas
Two-Way data binding
New stuff announced during Google IO 2016
Dos and don'ts
MVVM & TDD
Summary
Dos
• From time to time look at generated code
• Learn from already implemented bindings for framework views
• Move view operations to custom bindings as much as possible
• Try to use it together with MVVM design pattern
• Give it a chance!
Dos
• Use Data Binding for backward
compatibility!
Dos
• Always check if data binging library will work with your other libraries
(squidb won’t work )
Don’ts
• Don’t reinvent the wheel, on Github there are many ready to use
bindings
• Don’t forget about unit tests!
Don’ts
<EditText
android:layout_height="wrap_content"
android:hint="@string/hint_ticketNumber"
android:inputType="number"
android:layout_width="fill_parent"
android:text="@{viewModel.name == null?
String.format(viewModel.format, viewModel.surname, viewModel.nick) :
viewModel.name + viewModel.city}"
/>
Don’t move your business logic to xml layout
Just don’t!
Basics
How it works?
Lambdas
Two-Way data binding
New stuff announced during Google IO 2016
Dos and don'ts
MVVM & TDD
Summary
Say hello to
MVVM
MVVM & TDD
@Mock
ISendService sendService;
@Test
public void mainViewModel_sendAction_sendService_send()
{
final MainViewModel viewModel = new MainViewModel(sendService);
final String givenText = "my text";
viewModel.setTwoWayText(givenText);
viewModel.sendAction();
verify(sendService).send(givenText);
}
Basics
How it works?
Lambdas
Two-Way data binding
New stuff announced during Google IO 2016
Dos and don'ts
MVVM & TDD
Summary
Method count
• ~700 methods from databinding library
• n methods from your custom binding adapters, conversions etc.
• k methods from generated code for each layout xml with data binding
enabled
Summary
Cons
Compiler errors are sometimes not saying
too much
Still in beta
Documentation is not updated
May break other libraries (for example squidb)
Pros
Easy to start
Less boilerplate code
Code generation during compilation
Easy to integrate with custom views and
libraries
Really powerful
Officialy created and supported by Google
Android Team
Q&A
Q&A
https://github.com/radzio/DeepDiveIntoAndroidDataBinding
+RadoslawPiekarz
@radzio
Radosław Piekarz
Head of Mobile at Tango Agency

More Related Content

What's hot

jQuery from the very beginning
jQuery from the very beginningjQuery from the very beginning
jQuery from the very beginningAnis Ahmad
 
Basics of reflection in java
Basics of reflection in javaBasics of reflection in java
Basics of reflection in javakim.mens
 
Java database connectivity
Java database connectivityJava database connectivity
Java database connectivityVaishali Modi
 
Java database connectivity with MYSQL
Java database connectivity with MYSQLJava database connectivity with MYSQL
Java database connectivity with MYSQLAdil Mehmoood
 
Spring Framework - AOP
Spring Framework - AOPSpring Framework - AOP
Spring Framework - AOPDzmitry Naskou
 
Introduction to react_js
Introduction to react_jsIntroduction to react_js
Introduction to react_jsMicroPyramid .
 
Developing Apps With React Native
Developing Apps With React NativeDeveloping Apps With React Native
Developing Apps With React NativeAlvaro Viebrantz
 
Java Spring framework, Dependency Injection, DI, IoC, Inversion of Control
Java Spring framework, Dependency Injection, DI, IoC, Inversion of ControlJava Spring framework, Dependency Injection, DI, IoC, Inversion of Control
Java Spring framework, Dependency Injection, DI, IoC, Inversion of ControlArjun Thakur
 
Design Pattern For C# Part 1
Design Pattern For C# Part 1Design Pattern For C# Part 1
Design Pattern For C# Part 1Shahzad
 
Android Navigation Component
Android Navigation ComponentAndroid Navigation Component
Android Navigation ComponentŁukasz Ciupa
 
Java Persistence API (JPA) Step By Step
Java Persistence API (JPA) Step By StepJava Persistence API (JPA) Step By Step
Java Persistence API (JPA) Step By StepGuo Albert
 

What's hot (20)

Thinking in react
Thinking in reactThinking in react
Thinking in react
 
Spring jdbc dao
Spring jdbc daoSpring jdbc dao
Spring jdbc dao
 
JPA and Hibernate
JPA and HibernateJPA and Hibernate
JPA and Hibernate
 
Introduction to kotlin
Introduction to kotlinIntroduction to kotlin
Introduction to kotlin
 
React/Redux
React/ReduxReact/Redux
React/Redux
 
jQuery from the very beginning
jQuery from the very beginningjQuery from the very beginning
jQuery from the very beginning
 
ReactJS
ReactJSReactJS
ReactJS
 
React and redux
React and reduxReact and redux
React and redux
 
Basics of reflection in java
Basics of reflection in javaBasics of reflection in java
Basics of reflection in java
 
Java database connectivity
Java database connectivityJava database connectivity
Java database connectivity
 
Java database connectivity with MYSQL
Java database connectivity with MYSQLJava database connectivity with MYSQL
Java database connectivity with MYSQL
 
Computer Science:Java jdbc
Computer Science:Java jdbcComputer Science:Java jdbc
Computer Science:Java jdbc
 
Spring Framework - AOP
Spring Framework - AOPSpring Framework - AOP
Spring Framework - AOP
 
Introduction to react_js
Introduction to react_jsIntroduction to react_js
Introduction to react_js
 
Developing Apps With React Native
Developing Apps With React NativeDeveloping Apps With React Native
Developing Apps With React Native
 
Angular Directives
Angular DirectivesAngular Directives
Angular Directives
 
Java Spring framework, Dependency Injection, DI, IoC, Inversion of Control
Java Spring framework, Dependency Injection, DI, IoC, Inversion of ControlJava Spring framework, Dependency Injection, DI, IoC, Inversion of Control
Java Spring framework, Dependency Injection, DI, IoC, Inversion of Control
 
Design Pattern For C# Part 1
Design Pattern For C# Part 1Design Pattern For C# Part 1
Design Pattern For C# Part 1
 
Android Navigation Component
Android Navigation ComponentAndroid Navigation Component
Android Navigation Component
 
Java Persistence API (JPA) Step By Step
Java Persistence API (JPA) Step By StepJava Persistence API (JPA) Step By Step
Java Persistence API (JPA) Step By Step
 

Viewers also liked

Android Data Binding in action using MVVM pattern - droidconUK
Android Data Binding in action using MVVM pattern - droidconUKAndroid Data Binding in action using MVVM pattern - droidconUK
Android Data Binding in action using MVVM pattern - droidconUKFabio Collini
 
Dominando o Data Binding no Android
Dominando o Data Binding no AndroidDominando o Data Binding no Android
Dominando o Data Binding no AndroidNelson Glauber Leal
 
Data Binding in Action using MVVM pattern
Data Binding in Action using MVVM patternData Binding in Action using MVVM pattern
Data Binding in Action using MVVM patternFabio Collini
 
Is Activity God? ~ The MVP Architecture ~
Is Activity God? ~ The MVP Architecture ~Is Activity God? ~ The MVP Architecture ~
Is Activity God? ~ The MVP Architecture ~Ken William
 
IPC: AIDL is not a curse
IPC: AIDL is not a curseIPC: AIDL is not a curse
IPC: AIDL is not a curseYonatan Levin
 
Long-read: assets and challenges of a (not so) emerging technology
Long-read: assets and challenges of a (not so) emerging technologyLong-read: assets and challenges of a (not so) emerging technology
Long-read: assets and challenges of a (not so) emerging technologyClaire Rioualen
 
Dover ALS Safety Moment of the Week 20-Mar-2017
Dover ALS Safety Moment of the Week 20-Mar-2017Dover ALS Safety Moment of the Week 20-Mar-2017
Dover ALS Safety Moment of the Week 20-Mar-2017albertaoiltool
 
Memory Leaks in Android Applications
Memory Leaks in Android ApplicationsMemory Leaks in Android Applications
Memory Leaks in Android ApplicationsLokesh Ponnada
 
Android - Thread, Handler and AsyncTask
Android - Thread, Handler and AsyncTaskAndroid - Thread, Handler and AsyncTask
Android - Thread, Handler and AsyncTaskHoang Ngo
 
Process Management
Process ManagementProcess Management
Process ManagementRoy Lee
 
Testable Android Apps using data binding and MVVM
Testable Android Apps using data binding and MVVMTestable Android Apps using data binding and MVVM
Testable Android Apps using data binding and MVVMFabio Collini
 
MVVM ( Model View ViewModel )
MVVM ( Model View ViewModel )MVVM ( Model View ViewModel )
MVVM ( Model View ViewModel )Ahmed Emad
 
FFMPEG on android
FFMPEG on androidFFMPEG on android
FFMPEG on androidYoss Cohen
 
A Separation of Concerns: Clean Architecture on Android
A Separation of Concerns: Clean Architecture on AndroidA Separation of Concerns: Clean Architecture on Android
A Separation of Concerns: Clean Architecture on AndroidOutware Mobile
 

Viewers also liked (20)

Android Data Binding in action using MVVM pattern - droidconUK
Android Data Binding in action using MVVM pattern - droidconUKAndroid Data Binding in action using MVVM pattern - droidconUK
Android Data Binding in action using MVVM pattern - droidconUK
 
Dominando o Data Binding no Android
Dominando o Data Binding no AndroidDominando o Data Binding no Android
Dominando o Data Binding no Android
 
Data Binding in Action using MVVM pattern
Data Binding in Action using MVVM patternData Binding in Action using MVVM pattern
Data Binding in Action using MVVM pattern
 
Is Activity God? ~ The MVP Architecture ~
Is Activity God? ~ The MVP Architecture ~Is Activity God? ~ The MVP Architecture ~
Is Activity God? ~ The MVP Architecture ~
 
Data binding w Androidzie
Data binding w AndroidzieData binding w Androidzie
Data binding w Androidzie
 
Android Databinding Library
Android Databinding LibraryAndroid Databinding Library
Android Databinding Library
 
IPC: AIDL is not a curse
IPC: AIDL is not a curseIPC: AIDL is not a curse
IPC: AIDL is not a curse
 
Data binding
Data bindingData binding
Data binding
 
Android ipm 20110409
Android ipm 20110409Android ipm 20110409
Android ipm 20110409
 
Long-read: assets and challenges of a (not so) emerging technology
Long-read: assets and challenges of a (not so) emerging technologyLong-read: assets and challenges of a (not so) emerging technology
Long-read: assets and challenges of a (not so) emerging technology
 
Android Data Binding
Android Data BindingAndroid Data Binding
Android Data Binding
 
Dover ALS Safety Moment of the Week 20-Mar-2017
Dover ALS Safety Moment of the Week 20-Mar-2017Dover ALS Safety Moment of the Week 20-Mar-2017
Dover ALS Safety Moment of the Week 20-Mar-2017
 
Memory Leaks in Android Applications
Memory Leaks in Android ApplicationsMemory Leaks in Android Applications
Memory Leaks in Android Applications
 
FFmpeg presentation
FFmpeg presentationFFmpeg presentation
FFmpeg presentation
 
Android - Thread, Handler and AsyncTask
Android - Thread, Handler and AsyncTaskAndroid - Thread, Handler and AsyncTask
Android - Thread, Handler and AsyncTask
 
Process Management
Process ManagementProcess Management
Process Management
 
Testable Android Apps using data binding and MVVM
Testable Android Apps using data binding and MVVMTestable Android Apps using data binding and MVVM
Testable Android Apps using data binding and MVVM
 
MVVM ( Model View ViewModel )
MVVM ( Model View ViewModel )MVVM ( Model View ViewModel )
MVVM ( Model View ViewModel )
 
FFMPEG on android
FFMPEG on androidFFMPEG on android
FFMPEG on android
 
A Separation of Concerns: Clean Architecture on Android
A Separation of Concerns: Clean Architecture on AndroidA Separation of Concerns: Clean Architecture on Android
A Separation of Concerns: Clean Architecture on Android
 

Similar to Deep dive into Android Data Binding

Infinum Android Talks #14 - Data binding to the rescue... or not (?) by Krist...
Infinum Android Talks #14 - Data binding to the rescue... or not (?) by Krist...Infinum Android Talks #14 - Data binding to the rescue... or not (?) by Krist...
Infinum Android Talks #14 - Data binding to the rescue... or not (?) by Krist...Infinum
 
Effective Android Data Binding
Effective Android Data BindingEffective Android Data Binding
Effective Android Data BindingEric Maxwell
 
SE2016 Android Mikle Anokhin "Speed up application development with data bind...
SE2016 Android Mikle Anokhin "Speed up application development with data bind...SE2016 Android Mikle Anokhin "Speed up application development with data bind...
SE2016 Android Mikle Anokhin "Speed up application development with data bind...Inhacking
 
Data binding 入門淺談
Data binding 入門淺談Data binding 入門淺談
Data binding 入門淺談awonwon
 
Knockoutjs databinding
Knockoutjs databindingKnockoutjs databinding
Knockoutjs databindingBoulos Dib
 
How to use data binding in android
How to use data binding in androidHow to use data binding in android
How to use data binding in androidInnovationM
 
GDG Mediterranean Dev Fest Code lab #DevFestMed15 da android ad android wear ...
GDG Mediterranean Dev Fest Code lab #DevFestMed15 da android ad android wear ...GDG Mediterranean Dev Fest Code lab #DevFestMed15 da android ad android wear ...
GDG Mediterranean Dev Fest Code lab #DevFestMed15 da android ad android wear ...Bruno Salvatore Belluccia
 
SharePoint Conference 2018 - APIs, APIs everywhere!
SharePoint Conference 2018 - APIs, APIs everywhere!SharePoint Conference 2018 - APIs, APIs everywhere!
SharePoint Conference 2018 - APIs, APIs everywhere!Sébastien Levert
 
Data Binding - Android by Harin Trivedi
Data Binding - Android by Harin TrivediData Binding - Android by Harin Trivedi
Data Binding - Android by Harin Trivediharintrivedi
 
Unit5 Mobile Application Development.doc
Unit5 Mobile Application Development.docUnit5 Mobile Application Development.doc
Unit5 Mobile Application Development.docKNANTHINIMCA
 
Dialogs in Android MVVM (14.11.2019)
Dialogs in Android MVVM (14.11.2019)Dialogs in Android MVVM (14.11.2019)
Dialogs in Android MVVM (14.11.2019)Vladislav Ermolin
 
Vaadin 7 CN
Vaadin 7 CNVaadin 7 CN
Vaadin 7 CNjojule
 
Big Data for each one of us
Big Data for each one of usBig Data for each one of us
Big Data for each one of usOSCON Byrum
 
android design pattern
android design patternandroid design pattern
android design patternLucas Xu
 
Getting your app ready for android n
Getting your app ready for android nGetting your app ready for android n
Getting your app ready for android nSercan Yusuf
 

Similar to Deep dive into Android Data Binding (20)

Infinum Android Talks #14 - Data binding to the rescue... or not (?) by Krist...
Infinum Android Talks #14 - Data binding to the rescue... or not (?) by Krist...Infinum Android Talks #14 - Data binding to the rescue... or not (?) by Krist...
Infinum Android Talks #14 - Data binding to the rescue... or not (?) by Krist...
 
Effective Android Data Binding
Effective Android Data BindingEffective Android Data Binding
Effective Android Data Binding
 
Knockout.js
Knockout.jsKnockout.js
Knockout.js
 
SE2016 Android Mikle Anokhin "Speed up application development with data bind...
SE2016 Android Mikle Anokhin "Speed up application development with data bind...SE2016 Android Mikle Anokhin "Speed up application development with data bind...
SE2016 Android Mikle Anokhin "Speed up application development with data bind...
 
Data binding 入門淺談
Data binding 入門淺談Data binding 入門淺談
Data binding 入門淺談
 
Knockoutjs databinding
Knockoutjs databindingKnockoutjs databinding
Knockoutjs databinding
 
Fundaments of Knockout js
Fundaments of Knockout jsFundaments of Knockout js
Fundaments of Knockout js
 
Knockoutjs
KnockoutjsKnockoutjs
Knockoutjs
 
How to use data binding in android
How to use data binding in androidHow to use data binding in android
How to use data binding in android
 
GDG Mediterranean Dev Fest Code lab #DevFestMed15 da android ad android wear ...
GDG Mediterranean Dev Fest Code lab #DevFestMed15 da android ad android wear ...GDG Mediterranean Dev Fest Code lab #DevFestMed15 da android ad android wear ...
GDG Mediterranean Dev Fest Code lab #DevFestMed15 da android ad android wear ...
 
SharePoint Conference 2018 - APIs, APIs everywhere!
SharePoint Conference 2018 - APIs, APIs everywhere!SharePoint Conference 2018 - APIs, APIs everywhere!
SharePoint Conference 2018 - APIs, APIs everywhere!
 
Data Binding - Android by Harin Trivedi
Data Binding - Android by Harin TrivediData Binding - Android by Harin Trivedi
Data Binding - Android by Harin Trivedi
 
Unit5 Mobile Application Development.doc
Unit5 Mobile Application Development.docUnit5 Mobile Application Development.doc
Unit5 Mobile Application Development.doc
 
Dialogs in Android MVVM (14.11.2019)
Dialogs in Android MVVM (14.11.2019)Dialogs in Android MVVM (14.11.2019)
Dialogs in Android MVVM (14.11.2019)
 
Vaadin 7 CN
Vaadin 7 CNVaadin 7 CN
Vaadin 7 CN
 
Big Data for each one of us
Big Data for each one of usBig Data for each one of us
Big Data for each one of us
 
Angular js
Angular jsAngular js
Angular js
 
Backbone Basics with Examples
Backbone Basics with ExamplesBackbone Basics with Examples
Backbone Basics with Examples
 
android design pattern
android design patternandroid design pattern
android design pattern
 
Getting your app ready for android n
Getting your app ready for android nGetting your app ready for android n
Getting your app ready for android n
 

Recently uploaded

A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfCionsystems
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 

Recently uploaded (20)

Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdf
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 

Deep dive into Android Data Binding