android databinding library
TRANSCRIPT
![Page 1: Android Databinding Library](https://reader034.vdocument.in/reader034/viewer/2022042509/55c8bdddbb61eb1a148b468e/html5/thumbnails/1.jpg)
Android'Data'Binding'LibraryTakuji'Nishibayashi
![Page 2: Android Databinding Library](https://reader034.vdocument.in/reader034/viewer/2022042509/55c8bdddbb61eb1a148b468e/html5/thumbnails/2.jpg)
About&me• Takuji(Nishibayashi
• @takuji31
• Fenrir(Inc.
• Nintendo(Network(ID(available!!!
• Udemae:(BD(/(Rank:(20
![Page 3: Android Databinding Library](https://reader034.vdocument.in/reader034/viewer/2022042509/55c8bdddbb61eb1a148b468e/html5/thumbnails/3.jpg)
About&me• Android(engineer((2010/02~)
• Loves(Kotlin
• Interest(RoboVM
![Page 4: Android Databinding Library](https://reader034.vdocument.in/reader034/viewer/2022042509/55c8bdddbb61eb1a148b468e/html5/thumbnails/4.jpg)
Data$Binding
![Page 5: Android Databinding Library](https://reader034.vdocument.in/reader034/viewer/2022042509/55c8bdddbb61eb1a148b468e/html5/thumbnails/5.jpg)
android'binding
![Page 6: Android Databinding Library](https://reader034.vdocument.in/reader034/viewer/2022042509/55c8bdddbb61eb1a148b468e/html5/thumbnails/6.jpg)
Not$ac've$!
![Page 7: Android Databinding Library](https://reader034.vdocument.in/reader034/viewer/2022042509/55c8bdddbb61eb1a148b468e/html5/thumbnails/7.jpg)
RoboBinding
![Page 8: Android Databinding Library](https://reader034.vdocument.in/reader034/viewer/2022042509/55c8bdddbb61eb1a148b468e/html5/thumbnails/8.jpg)
Not$work$with$AppCompat$!
![Page 9: Android Databinding Library](https://reader034.vdocument.in/reader034/viewer/2022042509/55c8bdddbb61eb1a148b468e/html5/thumbnails/9.jpg)
RxBinding
![Page 10: Android Databinding Library](https://reader034.vdocument.in/reader034/viewer/2022042509/55c8bdddbb61eb1a148b468e/html5/thumbnails/10.jpg)
Not$tested...
![Page 11: Android Databinding Library](https://reader034.vdocument.in/reader034/viewer/2022042509/55c8bdddbb61eb1a148b468e/html5/thumbnails/11.jpg)
One$way(only
![Page 12: Android Databinding Library](https://reader034.vdocument.in/reader034/viewer/2022042509/55c8bdddbb61eb1a148b468e/html5/thumbnails/12.jpg)
Code%only
![Page 13: Android Databinding Library](https://reader034.vdocument.in/reader034/viewer/2022042509/55c8bdddbb61eb1a148b468e/html5/thumbnails/13.jpg)
Xamarin'+'MvvmCross'/'Forms'etc.
![Page 14: Android Databinding Library](https://reader034.vdocument.in/reader034/viewer/2022042509/55c8bdddbb61eb1a148b468e/html5/thumbnails/14.jpg)
Cool
![Page 15: Android Databinding Library](https://reader034.vdocument.in/reader034/viewer/2022042509/55c8bdddbb61eb1a148b468e/html5/thumbnails/15.jpg)
Cross%pla)orm%!!!
![Page 16: Android Databinding Library](https://reader034.vdocument.in/reader034/viewer/2022042509/55c8bdddbb61eb1a148b468e/html5/thumbnails/16.jpg)
but$..
![Page 17: Android Databinding Library](https://reader034.vdocument.in/reader034/viewer/2022042509/55c8bdddbb61eb1a148b468e/html5/thumbnails/17.jpg)
Too#expensive#for#private#development
![Page 18: Android Databinding Library](https://reader034.vdocument.in/reader034/viewer/2022042509/55c8bdddbb61eb1a148b468e/html5/thumbnails/18.jpg)
DIY!
![Page 19: Android Databinding Library](https://reader034.vdocument.in/reader034/viewer/2022042509/55c8bdddbb61eb1a148b468e/html5/thumbnails/19.jpg)
Next%day
![Page 20: Android Databinding Library](https://reader034.vdocument.in/reader034/viewer/2022042509/55c8bdddbb61eb1a148b468e/html5/thumbnails/20.jpg)
Google&I/O&2015
![Page 21: Android Databinding Library](https://reader034.vdocument.in/reader034/viewer/2022042509/55c8bdddbb61eb1a148b468e/html5/thumbnails/21.jpg)
Android'Data'Binding'Library
![Page 22: Android Databinding Library](https://reader034.vdocument.in/reader034/viewer/2022042509/55c8bdddbb61eb1a148b468e/html5/thumbnails/22.jpg)
!
![Page 23: Android Databinding Library](https://reader034.vdocument.in/reader034/viewer/2022042509/55c8bdddbb61eb1a148b468e/html5/thumbnails/23.jpg)
Usage
![Page 24: Android Databinding Library](https://reader034.vdocument.in/reader034/viewer/2022042509/55c8bdddbb61eb1a148b468e/html5/thumbnails/24.jpg)
build.gradlebuildscript { repositories { jcenter() } dependencies { classpath "com.android.tools.build:gradle:1.3.0-beta1" classpath "com.android.databinding:dataBinder:1.0-rc1" }}
![Page 25: Android Databinding Library](https://reader034.vdocument.in/reader034/viewer/2022042509/55c8bdddbb61eb1a148b468e/html5/thumbnails/25.jpg)
build.gradle
apply plugin: 'com.android.application'apply plugin: 'com.android.databinding'
![Page 26: Android Databinding Library](https://reader034.vdocument.in/reader034/viewer/2022042509/55c8bdddbb61eb1a148b468e/html5/thumbnails/26.jpg)
View%modelpublic class ViewModel extends BaseObservable { @Bindable public String getFirstName() {} @Bindable public String getLastName() {} @Bindable public OffsetDateTime getLastUpdated() {}
public void setFirstName(String firstName) { this.firstName = firstName; notifyPropertyChanged(BR.firstName); } public void setLastName(String lastName) { this.lastName = lastName; notifyPropertyChanged(BR.lastName); } public void setLastUpdated(OffsetDateTime lastUpdated) { this.lastUpdated = lastUpdated; notifyPropertyChanged(BR.lastUpdated); }}
![Page 27: Android Databinding Library](https://reader034.vdocument.in/reader034/viewer/2022042509/55c8bdddbb61eb1a148b468e/html5/thumbnails/27.jpg)
Converterpublic class Converters { @BindingConversion public static String convertOffsetDateTime(OffsetDateTime dateTime) { return dateTime != null ? dateTime.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME) : ""; }
private Converters() {}}
![Page 28: Android Databinding Library](https://reader034.vdocument.in/reader034/viewer/2022042509/55c8bdddbb61eb1a148b468e/html5/thumbnails/28.jpg)
Layout'XML<layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity"> <data> <variable name="viewModel" type="jp.takuji31.databindingexample.ViewModel" /> </data> <!-- ... -->
<TextView android:text="@{viewModel.firstName + ' ' + viewModel.lastName}" /> <TextView android:text="@{viewModel.lastUpdated}" /> <!-- ... --></layout>
![Page 29: Android Databinding Library](https://reader034.vdocument.in/reader034/viewer/2022042509/55c8bdddbb61eb1a148b468e/html5/thumbnails/29.jpg)
Ac#vity//onCreateActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);binding.setViewModel(viewModel);binding.firstNameEditText.addTextChangedListener(new TextWatcher() { public void onTextChanged(CharSequence s, int start, int before, int count) { viewModel.setFirstName(s.toString()); }});binding.lastNameEditText.addTextChangedListener(new TextWatcher() { public void onTextChanged(CharSequence s, int start, int before, int count) { viewModel.setLastName(s.toString()); }});binding.submitButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { viewModel.setLastUpdated(OffsetDateTime.now()); }});
![Page 30: Android Databinding Library](https://reader034.vdocument.in/reader034/viewer/2022042509/55c8bdddbb61eb1a148b468e/html5/thumbnails/30.jpg)
Run
![Page 31: Android Databinding Library](https://reader034.vdocument.in/reader034/viewer/2022042509/55c8bdddbb61eb1a148b468e/html5/thumbnails/31.jpg)
Good• Auto&data&binding&more&less&codes
• Support&most&Android&version&(2.1~)
• Binding&adapter
• Converter
![Page 32: Android Databinding Library](https://reader034.vdocument.in/reader034/viewer/2022042509/55c8bdddbb61eb1a148b468e/html5/thumbnails/32.jpg)
Good• Expression+support
• No+more+findViewById!
• No+more+ViewHolder!
![Page 33: Android Databinding Library](https://reader034.vdocument.in/reader034/viewer/2022042509/55c8bdddbb61eb1a148b468e/html5/thumbnails/33.jpg)
Bad• One%way%binding%only!
• Supported%future?
• Unstable%support%(Android%Studio)
• development%in%progress
• Cannot%use%Kotlin%(Kotlin%M11%used%internally)
![Page 34: Android Databinding Library](https://reader034.vdocument.in/reader034/viewer/2022042509/55c8bdddbb61eb1a148b468e/html5/thumbnails/34.jpg)
Example
![Page 35: Android Databinding Library](https://reader034.vdocument.in/reader034/viewer/2022042509/55c8bdddbb61eb1a148b468e/html5/thumbnails/35.jpg)
github.com/takuji31/databinding3example
![Page 36: Android Databinding Library](https://reader034.vdocument.in/reader034/viewer/2022042509/55c8bdddbb61eb1a148b468e/html5/thumbnails/36.jpg)
Thank&you!