SlideShare uma empresa Scribd logo
1 de 55
Baixar para ler offline
Project
https://github.com/awonwon/gdgk-
databinding-sample
DataBinding
@GDG Kaohsiung
我是誰?
awonwon
25sprout Android
HITCON GIRLS
Android Studio 2.0 ^^?
What is Data Binding?
TextView
String show = "Hello"
DataBinding
Layout Activity
What is Data Binding?
Hello
TextView
String show = "Hello"
binding.set (show);
DataBinding
Layout Activity
What is Data Binding?
GGWP
TextView
Show="GGWP";
DataBinding
Layout Activity
Layout Activity
Binding With POJO
Name
TextView
DataBinding
Tel
TextView
Tel
TextView
User user = new User();
binding.set (user);
Clean Code
Zero Reflection
Official Library
MMVM
YEAH
main_layout
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/
android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/view_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=""/>
<TextView
android:id="@+id/view_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=""/>
< TextView …
</LinearLayout>
LinearLayout
{id}
{name}
{level}
{exp}
MainActivity
LinearLayout
{id}
{name}
{level}
{exp}
private TextView idView, nameView, levelView, expView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
findViews();
User user = new User("8591", " ", "5",
"2000");
idView.setText(user.id);
nameView.setText(user.name);
levelView.setText("LV." + user.level);
expView.setText(user.exp);
}
private void findViews(){
idView = (TextView) findViewById(R.id.view_id);
nameView = (TextView) findViewById(R.id.view_name);
levelView = (TextView) findViewById(R.id.view_level);
expView = (TextView) findViewById(R.id.view_exp);
}
MainActivity
LinearLayout
8591
LV.5
2000
private TextView idView, nameView, levelView, expView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
findViews();
User user = new User("8591", " ", "5","2000"
idView.setText(user.id);
nameView.setText(user.name);
levelView.setText("LV." + user.level);
expView.setText(user.exp);
}
private void findViews(){
idView = (TextView) findViewById(R.id.view_id);
nameView = (TextView) findViewById(R.id.view_name);
levelView = (TextView) findViewById(R.id.view_level);
expView = (TextView) findViewById(R.id.view_exp);
}
DataBinding
Build.gradle
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.sprout.give"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
dataBinding {
enabled = true
}
}
DataBinding
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/view_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=""/>
<TextView
android:id="@+id/view_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=""/>
< TextView …
</LinearLayout>
</layout>
main_layout
LinearLayout
{id}
{name}
{level}
{exp}
Root View <Layout>
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data class="MainActivityDataBinding">
<import type="com.awonwon.User"/>
<variable
name="user"
type="user"/>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/view_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=""/>
<TextView
android:id="@+id/view_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=""/>
< TextView …
</LinearLayout>
</layout>
main_layout
LinearLayout
{id}
{name}
{level}
{exp}
& Import Class
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data class="MainActivityDataBinding">
<import type="com.awonwon.User"/>
<variable
name="user"
type="user"/>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/view_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@{user.id}"/>
<TextView
android:id="@+id/view_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@{user.name}"/>
< TextView …
</LinearLayout>
</layout>
main_layout
LinearLayout
{user.id}
{user.name}
{user.level}
{user.exp}
binding @{value}
MainActivity
LinearLayout
{user.id}
{user.name}
{user.level}
{user.exp}
public class MainAcivity extends AppCompatActivity{
private TextView idView, nameView, levelView, expView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
findViews();
User user = new User("8591", " ", "5", "2000");
idView.setText(user.id);
nameView.setText(user.name);
levelView.setText("LV." + user.level);
expView.setText(user.exp);
}
private void findViews(){
idView = (TextView) findViewById(R.id.view_id);
nameView = (TextView) findViewById(R.id.view_name);
levelView = (TextView) findViewById(R.id.view_level);
expView = (TextView) findViewById(R.id.view_exp);
}
}
LinearLayout
8591
LV.5
2000
MainActivity public class MainAcivity extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MainActivityDataBinding binding =
DataBindingUtil.setContentView(
this, R.layout.main_layout);
User user = new User("8591", " ", "5", "2000");
binding.setUser(user);
}
BindingClass & Value
findView
。:.゚ (*´∀`)ノ゚.:。
Layout
View
DataBinding
Class
Layout
Data Binding
BindingClass
BindinClass
tag
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@{"Lv."+user.level}"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@{"Lv."+user.level}"/>
"Lv." + user.level
=> LV.5
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=""
android:tag="binding_1"/>
DataBinding Class
intermediatesclassesdebug[package_name]databinding
Binding Layout
intermediatesdata-binding-layout-outdebuglayout
buildintermediates
<layout
xmlns:android="http://schemas.android.com/apk/res/android">
<data class="MainActivityDataBinding">
<import type="com.awonwon.User"/>
<variable
name="user"
type="user"/>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@{user.id}"/>
< …
</LinearLayout>
</layout>
Initialize variable
Set value
Layout
1. Initialize Variable
<data class="com.awonwon.MainActivityBinding">
<import type="com.awonwon.model.User" />
<import type="android.view.View" alias="v" />
<variable name="user" type="User" />
<variable name="datetime" type="String" />
<variable name="position" type="int" />
</data>
MainActivityBinding …
private com.awonwon.model.User mUser;
private String mDatetime;
private int mPotision;
private com.awonwon.model.User getUser();
private void setUser(com.awonwon.model.User user);
private String getDatetTime();
private void setDateTime(String datetime);
private int getPosition();
private void setPosition(int position);
2. Set Value Example
android:text="@{user.lastName}"
android:text="@{MyStringUtils.capitalize(user.firstName)}"
android:visibility="@{user.isAdult ? View.VISIBLE : View.GONE}"
android:padding="@{large? @dimen/largePadding :
(int)@dimen/smallPadding}"
Null Coalescing
android:text="@{user.displayName ?? user.lastName}"
android:text="@{user.displayName != null ? user.displayName : user.lastName}"
• + - / * %
• +
• && || & | ^
• + - ! ~
• >> >>> <<
• == > < >= <=
• instanceof
• ()
• null
• Cast
•
• List Array Map
• ?:
※ XML encode : & = &amp;
<TextView android:text='@users.age > 18 ?
user.name.substring(0,1).toUpperCase() + "." +
user.lastName : @string/redacted'/>
BindAdapter
layout attribute
<ImageView
...
app:imageUrl="@{user.avatarUrl}
...
/>
BindAdapter
src field
@BindingAdapter(value = {"app:imageUrl"}, requireAll = true)
public static void loadImgUrl(ImageView view, String path){
Picasso.with(view.getContext())
.load(path)
.fit()
.centerCrop()
.into(view);
}
ID?
• static final MainActivityDataBinding
<TextView
android:id="@+id/view_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=""/>
public final TextView view_name;
JAVA Class
public class MainAcivity extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MainActivityDataBinding binding = DataBindingUtil.setContentView(
this, R.layout.main_layout);
User user = new User("8591", " ", "5", "2000");
binding.setUser(user);
}
}
DataBinding
public class MainAcivity extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MainActivityDataBinding binding = DataBindingUtil.setContentView(
this, R.layout.main_layout);
User user = new User("8591", " ", "5", "2000");
binding.setUser(user);
}
}
Create DataBinding Class
Set Variable Value
1. Create DataBinding Class
MainActivityDataBinding binding = DataBindingUtil.setContentView(
this, R.layout.main_layout);
ItemBinding binding = DataBindingUtil.inflate(LayoutInflater.from(c),
R.layout.item, parent, false);
2. Set Variable Value
binding.setUser(user);
binding.setVariable(BR.user, user);
…
Object Value
Observable Binding
1. BaseObservable & set method notifyPropertyChanged
public class User extends BaseObservable {
private String name;
@Bindable
public String getName() {
return name;
}
public void setLastName(String name) {
this.name = name;
notifyPropertyChanged(BR.name);
}
Observable Binding
2. ObservableField<T>
public final ObservableField<ItemAdapter> mItemAdapter = new ObservableField<>();
mItemAdapter.get().updateData(items);
mItemAdapter.set(adapter);
RecyclerAdapter
public class ItemViewHolder extends RecyclerView.ViewHolder {
private ItemBinding binding;
public ItemViewHolder(View itemView) {
super(itemView);
binding = DataBindingUtil.bind(itemView);
}
public ItemBinding getBinding(){
return binding;
}
public void setBinding(ItemBinding binding){
this.binding = binding;
}
}
RecyclerAdapter
@Override
public ItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
GalleryItemBinding binding = DataBindingUtil.inflate(LayoutInflater.from(c),
R.layout.item_gallery, parent, false);
ItemViewHolder holder = new ItemViewHolder(binding.getRoot());
holder.setBinding(binding);
return holder;
}
@Override
public void onBindViewHolder(ItemViewHolder holder, int position) {
holder.binding.setItem(mItems.get(position));
holder.binding.setPosition(position);
if (getItemViewType(position)==TYPE_SELECTED) {
holder.binding.setSelected(true);
}
holder.binding.executePendingBindings();
}
EditText
Two-Way Binding
Two-Way Binding
•Android Studio 2.1 Preview 3
<EditText android:text="@={user.name}" .../>
dependencies {
classpath 'com.android.tools.build:gradle:2.1.0-alpha3'
}
https://halfthought.wordpress.com/2016/03/23/2-way-data-binding-on-android/
DataBinding
Clean Code
Zero Reflection
Official Library
MMVM
Clean Code
Zero Reflection
Official Library
MMVM
Performance
• findViewById V.S. DataBinding
• findViewById
View
• DataBinding
Compiler Timer
View
RootView
LinearLayout
ImageView
RelativeLayout
TextView
LinearLayout
TextView
ImageView
Q&A
DataBinding Google I/O
https://realm.io/news/data-binding-android-boyar-mount/

Mais conteúdo relacionado

Mais procurados

Vaadin 7 CN
Vaadin 7 CNVaadin 7 CN
Vaadin 7 CNjojule
 
Hastening React SSR - Web Performance San Diego
Hastening React SSR - Web Performance San DiegoHastening React SSR - Web Performance San Diego
Hastening React SSR - Web Performance San DiegoMaxime Najim
 
Angular Project Report
 Angular Project Report Angular Project Report
Angular Project ReportKodexhub
 
Introducing Rendr: Run your Backbone.js apps on the client and server
Introducing Rendr: Run your Backbone.js apps on the client and serverIntroducing Rendr: Run your Backbone.js apps on the client and server
Introducing Rendr: Run your Backbone.js apps on the client and serverSpike Brehm
 
Angular js 1.3 presentation for fed nov 2014
Angular js 1.3 presentation for fed   nov 2014Angular js 1.3 presentation for fed   nov 2014
Angular js 1.3 presentation for fed nov 2014Sarah Hudson
 
AngularJs Superheroic JavaScript MVW Framework Services by Miracle Studios
AngularJs Superheroic JavaScript MVW Framework Services by Miracle StudiosAngularJs Superheroic JavaScript MVW Framework Services by Miracle Studios
AngularJs Superheroic JavaScript MVW Framework Services by Miracle StudiosLearnimtactics
 
One Weekend With AngularJS
One Weekend With AngularJSOne Weekend With AngularJS
One Weekend With AngularJSYashobanta Bai
 
Introduction to AngularJS Framework
Introduction to AngularJS FrameworkIntroduction to AngularJS Framework
Introduction to AngularJS FrameworkRaveendra R
 
Android N Highligts
Android N HighligtsAndroid N Highligts
Android N HighligtsSercan Yusuf
 
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
 
06. Android Basic Widget and Container
06. Android Basic Widget and Container06. Android Basic Widget and Container
06. Android Basic Widget and ContainerOum Saokosal
 
I/O Rewind 215: What's new in Android
I/O Rewind 215: What's new in AndroidI/O Rewind 215: What's new in Android
I/O Rewind 215: What's new in AndroidSittiphol Phanvilai
 

Mais procurados (20)

Android in practice
Android in practiceAndroid in practice
Android in practice
 
AngularJS
AngularJSAngularJS
AngularJS
 
Angular js PPT
Angular js PPTAngular js PPT
Angular js PPT
 
Vaadin 7 CN
Vaadin 7 CNVaadin 7 CN
Vaadin 7 CN
 
Android best practices
Android best practicesAndroid best practices
Android best practices
 
Hastening React SSR - Web Performance San Diego
Hastening React SSR - Web Performance San DiegoHastening React SSR - Web Performance San Diego
Hastening React SSR - Web Performance San Diego
 
Angular Project Report
 Angular Project Report Angular Project Report
Angular Project Report
 
Introducing Rendr: Run your Backbone.js apps on the client and server
Introducing Rendr: Run your Backbone.js apps on the client and serverIntroducing Rendr: Run your Backbone.js apps on the client and server
Introducing Rendr: Run your Backbone.js apps on the client and server
 
AspNetWhitePaper
AspNetWhitePaperAspNetWhitePaper
AspNetWhitePaper
 
Angular js
Angular jsAngular js
Angular js
 
Angular js 1.3 presentation for fed nov 2014
Angular js 1.3 presentation for fed   nov 2014Angular js 1.3 presentation for fed   nov 2014
Angular js 1.3 presentation for fed nov 2014
 
AngularJs Superheroic JavaScript MVW Framework Services by Miracle Studios
AngularJs Superheroic JavaScript MVW Framework Services by Miracle StudiosAngularJs Superheroic JavaScript MVW Framework Services by Miracle Studios
AngularJs Superheroic JavaScript MVW Framework Services by Miracle Studios
 
One Weekend With AngularJS
One Weekend With AngularJSOne Weekend With AngularJS
One Weekend With AngularJS
 
Introduction to AngularJS Framework
Introduction to AngularJS FrameworkIntroduction to AngularJS Framework
Introduction to AngularJS Framework
 
Android N Highligts
Android N HighligtsAndroid N Highligts
Android N Highligts
 
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
 
Angular js
Angular jsAngular js
Angular js
 
Angular js
Angular jsAngular js
Angular js
 
06. Android Basic Widget and Container
06. Android Basic Widget and Container06. Android Basic Widget and Container
06. Android Basic Widget and Container
 
I/O Rewind 215: What's new in Android
I/O Rewind 215: What's new in AndroidI/O Rewind 215: What's new in Android
I/O Rewind 215: What's new in Android
 

Destaque

Latest news in usa - dozens dead in us christmas storms
Latest news in usa - dozens dead in us christmas stormsLatest news in usa - dozens dead in us christmas storms
Latest news in usa - dozens dead in us christmas stormsPier420 Shopping Services
 
7th pre alg -l69--april 30
7th pre alg -l69--april 307th pre alg -l69--april 30
7th pre alg -l69--april 30jdurst65
 
8th alg -l6.1
8th alg -l6.18th alg -l6.1
8th alg -l6.1jdurst65
 
Pinstripe Media Content Marketing
Pinstripe Media Content MarketingPinstripe Media Content Marketing
Pinstripe Media Content MarketingPaul Gilbert
 
8th alg -l6.5
8th alg -l6.58th alg -l6.5
8th alg -l6.5jdurst65
 
7th math c2 -l66
7th math c2 -l667th math c2 -l66
7th math c2 -l66jdurst65
 
PIXNET Page Views 1st solution
PIXNET Page Views 1st solutionPIXNET Page Views 1st solution
PIXNET Page Views 1st solution志明 陳
 
KAMERA 2nd solution
KAMERA 2nd solutionKAMERA 2nd solution
KAMERA 2nd solution志明 陳
 
Nonverbal Learning Disability
Nonverbal Learning Disability Nonverbal Learning Disability
Nonverbal Learning Disability 4mirnikan
 
Leadership and implementing the Cloud in education
Leadership and implementing the Cloud in education Leadership and implementing the Cloud in education
Leadership and implementing the Cloud in education Karl Donert
 
Good to Great: How To Open a World Class Bar
Good to Great: How To Open a World Class BarGood to Great: How To Open a World Class Bar
Good to Great: How To Open a World Class BarPhilip Duff
 
Europe & Israel 3Q16 Deals Done Review
Europe & Israel 3Q16 Deals Done ReviewEurope & Israel 3Q16 Deals Done Review
Europe & Israel 3Q16 Deals Done ReviewGil Dibner
 
Europe & Israel 4Q15 Deals Done Review
Europe & Israel 4Q15 Deals Done ReviewEurope & Israel 4Q15 Deals Done Review
Europe & Israel 4Q15 Deals Done ReviewGil Dibner
 

Destaque (17)

Latest news in usa - dozens dead in us christmas storms
Latest news in usa - dozens dead in us christmas stormsLatest news in usa - dozens dead in us christmas storms
Latest news in usa - dozens dead in us christmas storms
 
Villena1
Villena1Villena1
Villena1
 
7th pre alg -l69--april 30
7th pre alg -l69--april 307th pre alg -l69--april 30
7th pre alg -l69--april 30
 
8th alg -l6.1
8th alg -l6.18th alg -l6.1
8th alg -l6.1
 
Pinstripe Media Content Marketing
Pinstripe Media Content MarketingPinstripe Media Content Marketing
Pinstripe Media Content Marketing
 
8th alg -l6.5
8th alg -l6.58th alg -l6.5
8th alg -l6.5
 
7th math c2 -l66
7th math c2 -l667th math c2 -l66
7th math c2 -l66
 
Mouse tutorial
Mouse tutorialMouse tutorial
Mouse tutorial
 
PIXNET Page Views 1st solution
PIXNET Page Views 1st solutionPIXNET Page Views 1st solution
PIXNET Page Views 1st solution
 
Save the Date
Save the DateSave the Date
Save the Date
 
KAMERA 2nd solution
KAMERA 2nd solutionKAMERA 2nd solution
KAMERA 2nd solution
 
Nonverbal Learning Disability
Nonverbal Learning Disability Nonverbal Learning Disability
Nonverbal Learning Disability
 
Leadership and implementing the Cloud in education
Leadership and implementing the Cloud in education Leadership and implementing the Cloud in education
Leadership and implementing the Cloud in education
 
Story behind Successful Implementation of LAPA in Nepal
Story behind Successful Implementation of LAPA in NepalStory behind Successful Implementation of LAPA in Nepal
Story behind Successful Implementation of LAPA in Nepal
 
Good to Great: How To Open a World Class Bar
Good to Great: How To Open a World Class BarGood to Great: How To Open a World Class Bar
Good to Great: How To Open a World Class Bar
 
Europe & Israel 3Q16 Deals Done Review
Europe & Israel 3Q16 Deals Done ReviewEurope & Israel 3Q16 Deals Done Review
Europe & Israel 3Q16 Deals Done Review
 
Europe & Israel 4Q15 Deals Done Review
Europe & Israel 4Q15 Deals Done ReviewEurope & Israel 4Q15 Deals Done Review
Europe & Israel 4Q15 Deals Done Review
 

Semelhante a Data binding 入門淺談

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
 
Fragments: Why, How, What For?
Fragments: Why, How, What For?Fragments: Why, How, What For?
Fragments: Why, How, What For?Brenda Cook
 
Data Binding - Android by Harin Trivedi
Data Binding - Android by Harin TrivediData Binding - Android by Harin Trivedi
Data Binding - Android by Harin Trivediharintrivedi
 
Android por onde começar? Mini Curso Erbase 2015
Android por onde começar? Mini Curso Erbase 2015 Android por onde começar? Mini Curso Erbase 2015
Android por onde começar? Mini Curso Erbase 2015 Mario Jorge Pereira
 
Android app development basics
Android app development basicsAndroid app development basics
Android app development basicsAnton Narusberg
 
Material Design (The Technical Essentials) by Mohammad Aljobairi @AMMxDROID
Material Design (The Technical Essentials) by Mohammad Aljobairi @AMMxDROIDMaterial Design (The Technical Essentials) by Mohammad Aljobairi @AMMxDROID
Material Design (The Technical Essentials) by Mohammad Aljobairi @AMMxDROIDJordan Open Source Association
 
Infinum Android Talks #16 - How to shoot your self in the foot by Dino Kovac
Infinum Android Talks #16 - How to shoot your self in the foot by Dino KovacInfinum Android Talks #16 - How to shoot your self in the foot by Dino Kovac
Infinum Android Talks #16 - How to shoot your self in the foot by Dino KovacInfinum
 
android layouts
android layoutsandroid layouts
android layoutsDeepa Rani
 
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
 
Angular server side rendering - Strategies & Technics
Angular server side rendering - Strategies & Technics Angular server side rendering - Strategies & Technics
Angular server side rendering - Strategies & Technics Eliran Eliassy
 
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
 
Beginning Native Android Apps
Beginning Native Android AppsBeginning Native Android Apps
Beginning Native Android AppsGil Irizarry
 
MVVM & Data Binding Library
MVVM & Data Binding Library MVVM & Data Binding Library
MVVM & Data Binding Library 10Clouds
 
Android Workshop
Android WorkshopAndroid Workshop
Android WorkshopJunda Ong
 
Support Design Library
Support Design LibrarySupport Design Library
Support Design LibraryTaeho Kim
 

Semelhante a Data binding 入門淺談 (20)

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
 
Fragments: Why, How, What For?
Fragments: Why, How, What For?Fragments: Why, How, What For?
Fragments: Why, How, What For?
 
Data Binding - Android by Harin Trivedi
Data Binding - Android by Harin TrivediData Binding - Android by Harin Trivedi
Data Binding - Android by Harin Trivedi
 
Android por onde começar? Mini Curso Erbase 2015
Android por onde começar? Mini Curso Erbase 2015 Android por onde começar? Mini Curso Erbase 2015
Android por onde começar? Mini Curso Erbase 2015
 
Chapter 5 - Layouts
Chapter 5 - LayoutsChapter 5 - Layouts
Chapter 5 - Layouts
 
Layouts in android
Layouts in androidLayouts in android
Layouts in android
 
Android app development basics
Android app development basicsAndroid app development basics
Android app development basics
 
Material Design (The Technical Essentials) by Mohammad Aljobairi @AMMxDROID
Material Design (The Technical Essentials) by Mohammad Aljobairi @AMMxDROIDMaterial Design (The Technical Essentials) by Mohammad Aljobairi @AMMxDROID
Material Design (The Technical Essentials) by Mohammad Aljobairi @AMMxDROID
 
Android Materials Design
Android Materials Design Android Materials Design
Android Materials Design
 
Infinum Android Talks #16 - How to shoot your self in the foot by Dino Kovac
Infinum Android Talks #16 - How to shoot your self in the foot by Dino KovacInfinum Android Talks #16 - How to shoot your self in the foot by Dino Kovac
Infinum Android Talks #16 - How to shoot your self in the foot by Dino Kovac
 
Layout
LayoutLayout
Layout
 
android layouts
android layoutsandroid layouts
android layouts
 
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...
 
Angular server side rendering - Strategies & Technics
Angular server side rendering - Strategies & Technics Angular server side rendering - Strategies & Technics
Angular server side rendering - Strategies & Technics
 
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...
 
Beginning Native Android Apps
Beginning Native Android AppsBeginning Native Android Apps
Beginning Native Android Apps
 
MVVM & Data Binding Library
MVVM & Data Binding Library MVVM & Data Binding Library
MVVM & Data Binding Library
 
Android Workshop
Android WorkshopAndroid Workshop
Android Workshop
 
1. shared pref
1. shared pref1. shared pref
1. shared pref
 
Support Design Library
Support Design LibrarySupport Design Library
Support Design Library
 

Último

Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 

Último (20)

Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 

Data binding 入門淺談