android databinding library

36
Android Data Binding Library Takuji Nishibayashi

Upload: takuji-nishibayashi

Post on 10-Aug-2015

201 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Android Databinding Library

Android'Data'Binding'LibraryTakuji'Nishibayashi

Page 2: Android Databinding Library

About&me• Takuji(Nishibayashi

• @takuji31

• Fenrir(Inc.

• Nintendo(Network(ID(available!!!

• Udemae:(BD(/(Rank:(20

Page 3: Android Databinding Library

About&me• Android(engineer((2010/02~)

• Loves(Kotlin

• Interest(RoboVM

Page 4: Android Databinding Library

Data$Binding

Page 5: Android Databinding Library

android'binding

Page 6: Android Databinding Library

Not$ac've$!

Page 7: Android Databinding Library

RoboBinding

Page 8: Android Databinding Library

Not$work$with$AppCompat$!

Page 9: Android Databinding Library

RxBinding

Page 10: Android Databinding Library

Not$tested...

Page 11: Android Databinding Library

One$way(only

Page 12: Android Databinding Library

Code%only

Page 13: Android Databinding Library

Xamarin'+'MvvmCross'/'Forms'etc.

Page 14: Android Databinding Library

Cool

Page 15: Android Databinding Library

Cross%pla)orm%!!!

Page 16: Android Databinding Library

but$..

Page 17: Android Databinding Library

Too#expensive#for#private#development

Page 18: Android Databinding Library

DIY!

Page 19: Android Databinding Library

Next%day

Page 20: Android Databinding Library

Google&I/O&2015

Page 21: Android Databinding Library

Android'Data'Binding'Library

Page 22: Android Databinding Library

!

Page 23: Android Databinding Library

Usage

Page 24: Android Databinding Library

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

build.gradle

apply plugin: 'com.android.application'apply plugin: 'com.android.databinding'

Page 26: Android Databinding Library

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

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

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

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

Run

Page 31: Android Databinding Library

Good• Auto&data&binding&more&less&codes

• Support&most&Android&version&(2.1~)

• Binding&adapter

• Converter

Page 32: Android Databinding Library

Good• Expression+support

• No+more+findViewById!

• No+more+ViewHolder!

Page 33: Android Databinding Library

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

Example

Page 35: Android Databinding Library

github.com/takuji31/databinding3example

Page 36: Android Databinding Library

Thank&you!