SlideShare a Scribd company logo
1 of 55
Download to read 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/

More Related Content

What's hot

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
Spike Brehm
 

What's hot (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
 

Viewers also liked

7th pre alg -l69--april 30
7th pre alg -l69--april 307th pre alg -l69--april 30
7th pre alg -l69--april 30
jdurst65
 
8th alg -l6.1
8th alg -l6.18th alg -l6.1
8th alg -l6.1
jdurst65
 
Pinstripe Media Content Marketing
Pinstripe Media Content MarketingPinstripe Media Content Marketing
Pinstripe Media Content Marketing
Paul Gilbert
 
8th alg -l6.5
8th alg -l6.58th alg -l6.5
8th alg -l6.5
jdurst65
 
7th math c2 -l66
7th math c2 -l667th math c2 -l66
7th math c2 -l66
jdurst65
 
Nonverbal Learning Disability
Nonverbal Learning Disability Nonverbal Learning Disability
Nonverbal Learning Disability
4mirnikan
 

Viewers also liked (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
 

Similar to Data binding 入門淺談

Android app development basics
Android app development basicsAndroid app development basics
Android app development basics
Anton Narusberg
 
android layouts
android layoutsandroid layouts
android layouts
Deepa Rani
 

Similar to 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
 

Recently uploaded

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Recently uploaded (20)

Quantum Leap in Next-Generation Computing
Quantum Leap in Next-Generation ComputingQuantum Leap in Next-Generation Computing
Quantum Leap in Next-Generation Computing
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Modernizing Legacy Systems Using Ballerina
Modernizing Legacy Systems Using BallerinaModernizing Legacy Systems Using Ballerina
Modernizing Legacy Systems Using Ballerina
 
The Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightThe Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and Insight
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
API Governance and Monetization - The evolution of API governance
API Governance and Monetization -  The evolution of API governanceAPI Governance and Monetization -  The evolution of API governance
API Governance and Monetization - The evolution of API governance
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by Anitaraj
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDM
 
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
 
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
How to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cfHow to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cf
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Design and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data ScienceDesign and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data Science
 
Less Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data PlatformLess Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data Platform
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 

Data binding 入門淺談