SlideShare a Scribd company logo
Cross-Platform Mobile Development
                                        with Eclipse




         @peterfriese / @itemismobile
APPlause - DemoCamp Munich
countless devices
APPlause - DemoCamp Munich
diversity of platforms
Java
public class SpeakersList extends GenericListActivity<Speaker> {

	   List<Speaker> speakers;

	   @Override
	   public void onCreate(Bundle savedInstanceState) {
	   	   super.onCreate(savedInstanceState);

	   	   setTitle("Speakers");

	   	   speakers = getItemsFromProvider();

	   	   ArrayList<AbstractRowAdapter> rowAdapters = new ArrayList<AbstractRowAdapter>();

	   	   Iterable<Speaker> items1 = speakers;
	   	   for (Speaker i : items1)
	   	   	   rowAdapters.add(new Cell1(i));

	   	   setListAdapter(new GenericItemAdapter(this, rowAdapters));
	   	   finishCreation();

	   }
C#
public partial class SpeakerDetailsDetailsView : PhoneApplicationPage
{
    public SpeakerDetailsDetailsView()
    {
        InitializeComponent();
    }

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        string selectedIndex = "";
        if (NavigationContext.QueryString.TryGetValue("itemByIndex", out selectedIndex))
        {
            int index = int.Parse(selectedIndex);
            DataContext = App.RootViewModelProvider.BlogpostsModelProvider().BlogItems[index];
        }
    }
}
Objective-C
@implementation SpeakersListViewController

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
	   if(section == 0) {
	   	   return [[[contentProvider valueForKeyPath:@"content"] asArray] count];
	   } else
	   	   return 0;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
	   id item = [self.items objectAtIndex: indexPath.row];
	   IPContentProvider *provider = [(itemisAppProviders*)contentProvider.providers
        providerForSpeakerByName: [item valueForKeyPath:@"name"]];
	   SpeakerDetailsViewController *controller = [[SpeakerDetailsViewController alloc] init];
	   controller.contentProvider = provider;
	   [self.navigationController pushViewController: controller animated: TRUE];
	   [controller release];
}
HTML
{% extends "generated/application.html" %}
{% block title%}Speakers{% endblock %}
{% block content_class %}table list{% endblock %}

{% block content %}
<ul>
{% for s in data|to_list %}
  <li>
     {% url views.SpeakerDetailsBySpeakerByName s.name|urlencode as url %}
     <a href="{{ url }}">
       <div class="cell_text">{{s.name|safe}}</div>
     </a>
  </li>
{% endfor %}
</ul>
{% endblock %}
App Anatomy 101
Views
Views   Cells
Views Cells   Navigation
Views Cells Navigation
Views
Cells
Navigation
Entities
Views
                 Session
Cells        title
             room
Navigation
Views
                 Session
Cells        title
             room
Navigation
Entities
Views
                 Session
Cells        title
             room
Navigation
Entities
Views
                 Session
Cells        title
             room
Navigation
Entities                   ContentProviders
Views
                 Session
Cells        title
             room
Navigation
Entities                   ContentProviders
Views
                       Session
Cells              title
                   room
Navigation
Entities
ContentProviders
Demo :)
APPlause - DemoCamp Munich
@hbehrens and @peterfriese working with @itemismobile

More Related Content

PDF
Desenvolvendo APIs em Go usando Middlewares
Elton Minetto
 
PDF
Введение в REST API
Oleg Zinchenko
 
PDF
PSR-7, middlewares e o futuro dos frameworks
Elton Minetto
 
PDF
Python RESTful webservices with Python: Flask and Django solutions
Solution4Future
 
PDF
jSession #4 - Maciej Puchalski - Zaawansowany retrofit
jSession
 
PDF
Reliable Python REST API (by Volodymyr Hotsyk) - Web Back-End Tech Hangout - ...
Innovecs
 
PDF
Bottle - Python Web Microframework (english)
Markus Zapke-Gründemann
 
PDF
international PHP2011_Bastian Feder_jQuery's Secrets
smueller_sandsmedia
 
Desenvolvendo APIs em Go usando Middlewares
Elton Minetto
 
Введение в REST API
Oleg Zinchenko
 
PSR-7, middlewares e o futuro dos frameworks
Elton Minetto
 
Python RESTful webservices with Python: Flask and Django solutions
Solution4Future
 
jSession #4 - Maciej Puchalski - Zaawansowany retrofit
jSession
 
Reliable Python REST API (by Volodymyr Hotsyk) - Web Back-End Tech Hangout - ...
Innovecs
 
Bottle - Python Web Microframework (english)
Markus Zapke-Gründemann
 
international PHP2011_Bastian Feder_jQuery's Secrets
smueller_sandsmedia
 

What's hot (20)

PDF
Php unit the-mostunknownparts
Bastian Feder
 
PDF
News of the Symfony2 World
Fabien Potencier
 
PDF
Symfony 2.0 on PHP 5.3
Fabien Potencier
 
ODP
Making a simple jQuery plug-in
Dylan Fogarty-MacDonald
 
ODP
Perl5i
Marcos Rebelo
 
PDF
Programming with Python and PostgreSQL
Peter Eisentraut
 
PPTX
Zend framework
Prem Shankar
 
PDF
Simplifying java with lambdas (short)
RichardWarburton
 
PDF
JSLab. Домников Виталий. "ES6 генераторы и Koa.js"
GeeksLab Odessa
 
PPTX
Apache Ant
Ali Bahu
 
PPTX
Cake PHP 3 Presentaion
glslarmenta
 
PDF
for this particular program how do i create the input innotepad 1st ?#include...
hwbloom14
 
PDF
Legacy applications - 4Developes konferencja, Piotr Pasich
Piotr Pasich
 
PPTX
Gary Gao: APIs Are Good
talnoznisky
 
PPTX
Ch3(working with file)
Chhom Karath
 
PDF
Writing Swift code with great testability
John Sundell
 
PDF
GenStage and Flow - Jose Valim
Elixir Club
 
PDF
Impala: A Modern, Open-Source SQL Engine for Hadoop
All Things Open
 
Php unit the-mostunknownparts
Bastian Feder
 
News of the Symfony2 World
Fabien Potencier
 
Symfony 2.0 on PHP 5.3
Fabien Potencier
 
Making a simple jQuery plug-in
Dylan Fogarty-MacDonald
 
Programming with Python and PostgreSQL
Peter Eisentraut
 
Zend framework
Prem Shankar
 
Simplifying java with lambdas (short)
RichardWarburton
 
JSLab. Домников Виталий. "ES6 генераторы и Koa.js"
GeeksLab Odessa
 
Apache Ant
Ali Bahu
 
Cake PHP 3 Presentaion
glslarmenta
 
for this particular program how do i create the input innotepad 1st ?#include...
hwbloom14
 
Legacy applications - 4Developes konferencja, Piotr Pasich
Piotr Pasich
 
Gary Gao: APIs Are Good
talnoznisky
 
Ch3(working with file)
Chhom Karath
 
Writing Swift code with great testability
John Sundell
 
GenStage and Flow - Jose Valim
Elixir Club
 
Impala: A Modern, Open-Source SQL Engine for Hadoop
All Things Open
 
Ad

Similar to APPlause - DemoCamp Munich (9)

PDF
EclipseCon2011 Cross-Platform Mobile Development with Eclipse
Heiko Behrens
 
PDF
Cross-Platform Native Mobile Development with Eclipse
Peter Friese
 
PDF
Model Driven App Development for iPhone and Android
Peter Friese
 
PPTX
05 content providers - Android
Wingston
 
PDF
MDSD for iPhone and Android
Heiko Behrens
 
PDF
Beginning i os part 2 sam kirchmeier
Mobile March
 
PPTX
Android App Performance Tips
Giap Le Van
 
PPTX
Spinners, Adapters & Fragment Communication
CITSimon
 
PDF
Tech Talk #2: Android app performance tips
Nexus FrontierTech
 
EclipseCon2011 Cross-Platform Mobile Development with Eclipse
Heiko Behrens
 
Cross-Platform Native Mobile Development with Eclipse
Peter Friese
 
Model Driven App Development for iPhone and Android
Peter Friese
 
05 content providers - Android
Wingston
 
MDSD for iPhone and Android
Heiko Behrens
 
Beginning i os part 2 sam kirchmeier
Mobile March
 
Android App Performance Tips
Giap Le Van
 
Spinners, Adapters & Fragment Communication
CITSimon
 
Tech Talk #2: Android app performance tips
Nexus FrontierTech
 
Ad

More from Peter Friese (20)

PDF
Building Reusable SwiftUI Components
Peter Friese
 
PDF
Firebase & SwiftUI Workshop
Peter Friese
 
PDF
Building Reusable SwiftUI Components
Peter Friese
 
PDF
Firebase for Apple Developers - SwiftHeroes
Peter Friese
 
PDF
 +  = ❤️ (Firebase for Apple Developers) at Swift Leeds
Peter Friese
 
PDF
async/await in Swift
Peter Friese
 
PDF
Firebase for Apple Developers
Peter Friese
 
PDF
Building Apps with SwiftUI and Firebase
Peter Friese
 
PDF
Rapid Application Development with SwiftUI and Firebase
Peter Friese
 
PDF
Rapid Application Development with SwiftUI and Firebase
Peter Friese
 
PDF
6 Things You Didn't Know About Firebase Auth
Peter Friese
 
PDF
Five Things You Didn't Know About Firebase Auth
Peter Friese
 
PDF
Building High-Quality Apps for Google Assistant
Peter Friese
 
PDF
Building Conversational Experiences with Actions on Google
Peter Friese
 
PDF
Building Conversational Experiences with Actions on Google
Peter Friese
 
PDF
What's new in Android Wear 2.0
Peter Friese
 
PDF
Google Fit, Android Wear & Xamarin
Peter Friese
 
PDF
Introduction to Android Wear
Peter Friese
 
PDF
Google Play Services Rock
Peter Friese
 
PDF
Introduction to Android Wear
Peter Friese
 
Building Reusable SwiftUI Components
Peter Friese
 
Firebase & SwiftUI Workshop
Peter Friese
 
Building Reusable SwiftUI Components
Peter Friese
 
Firebase for Apple Developers - SwiftHeroes
Peter Friese
 
 +  = ❤️ (Firebase for Apple Developers) at Swift Leeds
Peter Friese
 
async/await in Swift
Peter Friese
 
Firebase for Apple Developers
Peter Friese
 
Building Apps with SwiftUI and Firebase
Peter Friese
 
Rapid Application Development with SwiftUI and Firebase
Peter Friese
 
Rapid Application Development with SwiftUI and Firebase
Peter Friese
 
6 Things You Didn't Know About Firebase Auth
Peter Friese
 
Five Things You Didn't Know About Firebase Auth
Peter Friese
 
Building High-Quality Apps for Google Assistant
Peter Friese
 
Building Conversational Experiences with Actions on Google
Peter Friese
 
Building Conversational Experiences with Actions on Google
Peter Friese
 
What's new in Android Wear 2.0
Peter Friese
 
Google Fit, Android Wear & Xamarin
Peter Friese
 
Introduction to Android Wear
Peter Friese
 
Google Play Services Rock
Peter Friese
 
Introduction to Android Wear
Peter Friese
 

Recently uploaded (20)

PDF
The Future of Mobile Is Context-Aware—Are You Ready?
iProgrammer Solutions Private Limited
 
PDF
The Future of Artificial Intelligence (AI)
Mukul
 
PDF
AI-Cloud-Business-Management-Platforms-The-Key-to-Efficiency-Growth.pdf
Artjoker Software Development Company
 
PDF
Event Presentation Google Cloud Next Extended 2025
minhtrietgect
 
PDF
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 
PPTX
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
PDF
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
PDF
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 
PDF
Make GenAI investments go further with the Dell AI Factory
Principled Technologies
 
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
PPTX
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
sujalchauhan1305
 
PDF
SparkLabs Primer on Artificial Intelligence 2025
SparkLabs Group
 
PDF
Advances in Ultra High Voltage (UHV) Transmission and Distribution Systems.pdf
Nabajyoti Banik
 
PDF
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
PDF
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 
PPTX
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
PDF
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
PDF
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
PPTX
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
PDF
OFFOFFBOX™ – A New Era for African Film | Startup Presentation
ambaicciwalkerbrian
 
The Future of Mobile Is Context-Aware—Are You Ready?
iProgrammer Solutions Private Limited
 
The Future of Artificial Intelligence (AI)
Mukul
 
AI-Cloud-Business-Management-Platforms-The-Key-to-Efficiency-Growth.pdf
Artjoker Software Development Company
 
Event Presentation Google Cloud Next Extended 2025
minhtrietgect
 
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 
Make GenAI investments go further with the Dell AI Factory
Principled Technologies
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
sujalchauhan1305
 
SparkLabs Primer on Artificial Intelligence 2025
SparkLabs Group
 
Advances in Ultra High Voltage (UHV) Transmission and Distribution Systems.pdf
Nabajyoti Banik
 
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
Economic Impact of Data Centres to the Malaysian Economy
flintglobalapac
 
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
OFFOFFBOX™ – A New Era for African Film | Startup Presentation
ambaicciwalkerbrian
 

APPlause - DemoCamp Munich

  • 1. Cross-Platform Mobile Development with Eclipse @peterfriese / @itemismobile
  • 6. Java public class SpeakersList extends GenericListActivity<Speaker> { List<Speaker> speakers; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTitle("Speakers"); speakers = getItemsFromProvider(); ArrayList<AbstractRowAdapter> rowAdapters = new ArrayList<AbstractRowAdapter>(); Iterable<Speaker> items1 = speakers; for (Speaker i : items1) rowAdapters.add(new Cell1(i)); setListAdapter(new GenericItemAdapter(this, rowAdapters)); finishCreation(); }
  • 7. C# public partial class SpeakerDetailsDetailsView : PhoneApplicationPage { public SpeakerDetailsDetailsView() { InitializeComponent(); } protected override void OnNavigatedTo(NavigationEventArgs e) { string selectedIndex = ""; if (NavigationContext.QueryString.TryGetValue("itemByIndex", out selectedIndex)) { int index = int.Parse(selectedIndex); DataContext = App.RootViewModelProvider.BlogpostsModelProvider().BlogItems[index]; } } }
  • 8. Objective-C @implementation SpeakersListViewController - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { if(section == 0) { return [[[contentProvider valueForKeyPath:@"content"] asArray] count]; } else return 0; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { id item = [self.items objectAtIndex: indexPath.row]; IPContentProvider *provider = [(itemisAppProviders*)contentProvider.providers providerForSpeakerByName: [item valueForKeyPath:@"name"]]; SpeakerDetailsViewController *controller = [[SpeakerDetailsViewController alloc] init]; controller.contentProvider = provider; [self.navigationController pushViewController: controller animated: TRUE]; [controller release]; }
  • 9. HTML {% extends "generated/application.html" %} {% block title%}Speakers{% endblock %} {% block content_class %}table list{% endblock %} {% block content %} <ul> {% for s in data|to_list %} <li> {% url views.SpeakerDetailsBySpeakerByName s.name|urlencode as url %} <a href="{{ url }}"> <div class="cell_text">{{s.name|safe}}</div> </a> </li> {% endfor %} </ul> {% endblock %}
  • 11. Views
  • 12. Views Cells
  • 13. Views Cells Navigation
  • 16. Entities Views Session Cells title room Navigation
  • 17. Views Session Cells title room Navigation Entities
  • 18. Views Session Cells title room Navigation Entities
  • 19. Views Session Cells title room Navigation Entities ContentProviders
  • 20. Views Session Cells title room Navigation Entities ContentProviders
  • 21. Views Session Cells title room Navigation Entities ContentProviders
  • 24. @hbehrens and @peterfriese working with @itemismobile