SlideShare a Scribd company logo
1 of 14
Download to read offline
Publishing Team
- Focus on composing, scheduling and controlling content
- Recent projects:
- New Compose
- Facebook album support
- Extensible Media Library
Publishing Team
- Adopted Kotlin on March 21st, 2017
- Since:
- Lines in Java: 695
Publishing Team
- Adopted Kotlin on March 21st, 2017
- Since:
- Lines in Java: 695
- Lines converted from Java to Kotlin: 732
How should it be?
- View components should be abstract
- Should be able to put a view inside an XML and it should work
without adding anything
- View parent should state what happens to the fragment when the
component is interacted with
- View component state what happens to the component when it is
interacted with
How does Kotlin help?
- Setting Lambda functions as variables
- Functions can be set by the view parent for onClick, onTextChanged etc
- When the component is interacted with, perform a uniform behavior and then call
the unit local variable
- Nullability
- Variables be null, meaning that if the variable isn’t set do nothing
- You only have to set functions for things you only care about
Demo

More Related Content

What's hot

React.js - and how it changed our thinking about UI
React.js - and how it changed our thinking about UIReact.js - and how it changed our thinking about UI
React.js - and how it changed our thinking about UI
Marcin Grzywaczewski
 
Introduction to Grails 2013
Introduction to Grails 2013Introduction to Grails 2013
Introduction to Grails 2013
Gavin Hogan
 

What's hot (14)

The future of cloud programming
The future of cloud programmingThe future of cloud programming
The future of cloud programming
 
React Everydayhero BrisJS Meetup
React Everydayhero BrisJS MeetupReact Everydayhero BrisJS Meetup
React Everydayhero BrisJS Meetup
 
Meetup slide 1st june
Meetup slide 1st juneMeetup slide 1st june
Meetup slide 1st june
 
Era of server less computing
Era of server less computingEra of server less computing
Era of server less computing
 
2015 08-11-scdo-meetup
2015 08-11-scdo-meetup2015 08-11-scdo-meetup
2015 08-11-scdo-meetup
 
Developing Single Page Apps with Ember.js
Developing Single Page Apps with Ember.jsDeveloping Single Page Apps with Ember.js
Developing Single Page Apps with Ember.js
 
Front-End Tools and Workflows
Front-End Tools and WorkflowsFront-End Tools and Workflows
Front-End Tools and Workflows
 
React.js - and how it changed our thinking about UI
React.js - and how it changed our thinking about UIReact.js - and how it changed our thinking about UI
React.js - and how it changed our thinking about UI
 
Introduction to chef
Introduction to chefIntroduction to chef
Introduction to chef
 
Atmosphere 2016 - Kamil Szymanski - Creating Jenkins pipelines with groovy-b...
Atmosphere 2016 -  Kamil Szymanski - Creating Jenkins pipelines with groovy-b...Atmosphere 2016 -  Kamil Szymanski - Creating Jenkins pipelines with groovy-b...
Atmosphere 2016 - Kamil Szymanski - Creating Jenkins pipelines with groovy-b...
 
Introduction to Grails 2013
Introduction to Grails 2013Introduction to Grails 2013
Introduction to Grails 2013
 
React.JS Conf & F8
React.JS Conf & F8React.JS Conf & F8
React.JS Conf & F8
 
Era of server less computing final
Era of server less computing finalEra of server less computing final
Era of server less computing final
 
Serverless testing @ serverlessdays Hamburg
Serverless testing @ serverlessdays HamburgServerless testing @ serverlessdays Hamburg
Serverless testing @ serverlessdays Hamburg
 

Similar to Abstract Views - Trevor Stokvis

Similar to Abstract Views - Trevor Stokvis (20)

RubyMotion Inspect Conference - 2013. (With speaker notes.)
RubyMotion Inspect Conference - 2013. (With speaker notes.)RubyMotion Inspect Conference - 2013. (With speaker notes.)
RubyMotion Inspect Conference - 2013. (With speaker notes.)
 
Sample of Content Audit Deck // MAN Digital
Sample of Content Audit Deck // MAN DigitalSample of Content Audit Deck // MAN Digital
Sample of Content Audit Deck // MAN Digital
 
vKUG - Migrating Spring Boot apps from annotation-based config to Functional
vKUG - Migrating Spring Boot apps from annotation-based config to FunctionalvKUG - Migrating Spring Boot apps from annotation-based config to Functional
vKUG - Migrating Spring Boot apps from annotation-based config to Functional
 
Dynamic content with Angular
Dynamic content with AngularDynamic content with Angular
Dynamic content with Angular
 
ING Meetup - Migrating Spring Boot Config Annotations to Functional with Kotlin
ING Meetup - Migrating Spring Boot Config Annotations to Functional with KotlinING Meetup - Migrating Spring Boot Config Annotations to Functional with Kotlin
ING Meetup - Migrating Spring Boot Config Annotations to Functional with Kotlin
 
Kotlin/Everywhere Utrecht - From annotations to declarative, the path to more...
Kotlin/Everywhere Utrecht - From annotations to declarative, the path to more...Kotlin/Everywhere Utrecht - From annotations to declarative, the path to more...
Kotlin/Everywhere Utrecht - From annotations to declarative, the path to more...
 
W-JAX - Migrating Spring Boot apps from annotation-based config to Functional...
W-JAX - Migrating Spring Boot apps from annotation-based config to Functional...W-JAX - Migrating Spring Boot apps from annotation-based config to Functional...
W-JAX - Migrating Spring Boot apps from annotation-based config to Functional...
 
DevFest Santo Domingo - Migrating Spring Boot apps from annotation-based conf...
DevFest Santo Domingo - Migrating Spring Boot apps from annotation-based conf...DevFest Santo Domingo - Migrating Spring Boot apps from annotation-based conf...
DevFest Santo Domingo - Migrating Spring Boot apps from annotation-based conf...
 
Kotlin/Everywehere Minsk - Migrating Spring Boot Apps from Annotation-based C...
Kotlin/Everywehere Minsk - Migrating Spring Boot Apps from Annotation-based C...Kotlin/Everywehere Minsk - Migrating Spring Boot Apps from Annotation-based C...
Kotlin/Everywehere Minsk - Migrating Spring Boot Apps from Annotation-based C...
 
Istanbul Spring Meetup - Migrating SpringBoot Apps from Annotation-based Conf...
Istanbul Spring Meetup - Migrating SpringBoot Apps from Annotation-based Conf...Istanbul Spring Meetup - Migrating SpringBoot Apps from Annotation-based Conf...
Istanbul Spring Meetup - Migrating SpringBoot Apps from Annotation-based Conf...
 
Vba Macros Interoperability
Vba Macros InteroperabilityVba Macros Interoperability
Vba Macros Interoperability
 
Migraine Drupal - syncing your staging and live sites
Migraine Drupal - syncing your staging and live sitesMigraine Drupal - syncing your staging and live sites
Migraine Drupal - syncing your staging and live sites
 
Building a dynamic SPA website with Angular
Building a dynamic SPA website with AngularBuilding a dynamic SPA website with Angular
Building a dynamic SPA website with Angular
 
Fame
FameFame
Fame
 
Angular ❤️CMS
Angular ❤️CMSAngular ❤️CMS
Angular ❤️CMS
 
Say Goodbye To Java: Getting Started With Kotlin For Android Development
Say Goodbye To Java: Getting Started With Kotlin For Android DevelopmentSay Goodbye To Java: Getting Started With Kotlin For Android Development
Say Goodbye To Java: Getting Started With Kotlin For Android Development
 
Container Patterns
Container PatternsContainer Patterns
Container Patterns
 
Introduction to Kotlin - Android KTX
Introduction to Kotlin - Android KTXIntroduction to Kotlin - Android KTX
Introduction to Kotlin - Android KTX
 
Mule maven
Mule mavenMule maven
Mule maven
 
Plone Futures, Plone Conference 2016 Keynote by Eric Steele
Plone Futures, Plone Conference 2016 Keynote by Eric SteelePlone Futures, Plone Conference 2016 Keynote by Eric Steele
Plone Futures, Plone Conference 2016 Keynote by Eric Steele
 

Recently uploaded

%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
masabamasaba
 

Recently uploaded (20)

The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Generic or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisionsGeneric or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisions
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
 
%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 

Abstract Views - Trevor Stokvis

  • 1.
  • 2. Publishing Team - Focus on composing, scheduling and controlling content - Recent projects: - New Compose - Facebook album support - Extensible Media Library
  • 3. Publishing Team - Adopted Kotlin on March 21st, 2017 - Since: - Lines in Java: 695
  • 4. Publishing Team - Adopted Kotlin on March 21st, 2017 - Since: - Lines in Java: 695 - Lines converted from Java to Kotlin: 732
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11. How should it be? - View components should be abstract - Should be able to put a view inside an XML and it should work without adding anything - View parent should state what happens to the fragment when the component is interacted with - View component state what happens to the component when it is interacted with
  • 12.
  • 13. How does Kotlin help? - Setting Lambda functions as variables - Functions can be set by the view parent for onClick, onTextChanged etc - When the component is interacted with, perform a uniform behavior and then call the unit local variable - Nullability - Variables be null, meaning that if the variable isn’t set do nothing - You only have to set functions for things you only care about
  • 14. Demo