{"id":76971,"date":"2017-05-19T12:12:03","date_gmt":"2017-05-19T12:12:03","guid":{"rendered":"http:\/\/www.esri.com\/arcgis-blog\/products\/product\/uncategorized\/using-kotlin-android-extensions-with-arcgis-android\/"},"modified":"2018-03-26T21:13:01","modified_gmt":"2018-03-26T21:13:01","slug":"using-kotlin-android-extensions-with-arcgis-android","status":"publish","type":"blog","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/field-mobility\/field-mobility\/using-kotlin-android-extensions-with-arcgis-android","title":{"rendered":"Using Kotlin Android Extensions with ArcGIS Android"},"author":3721,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","format":"standard","meta":{"_acf_changed":false,"_searchwp_excluded":""},"categories":[23261],"tags":[23441],"industry":[],"product":[36881,36601],"class_list":["post-76971","blog","type-blog","status-publish","format-standard","hentry","category-field-mobility","tag-android","product-api-for-android","product-developers"],"acf":{"short_description":"Google just recently announced official support for Kotlin in Android\u00a0so we can now take advantage of techniques to enhance the developm...","flexible_content":[{"acf_fc_layout":"content","content":"<p>Google just recently announced official support for <a href=\"https:\/\/developer.android.com\/kotlin\/index.html\" target=\"_blank\">Kotlin in Android<\/a>\u00a0so we can now take advantage of techniques to enhance the development experience with ArcGIS Android. \u00a0One way we can do this is through the use of Kotlin Android Extensions.<\/p>\n<p><strong>Accessing View Resources<\/strong><\/p>\n<p>In Android Java, once you provide resources in your app, e.g. a <em>MapView<\/em>, you can apply it by referencing its resource ID which are defined in your projects <em>R<\/em> class that is automatically generated. \u00a0You can access resources in code by passing a resource ID as a method parameter. \u00a0For example, you can access a <em>MapView<\/em> using <em>findViewById<\/em>:<\/p>\n<p>[sourcecode language=&#8221;java&#8221;]MapView mapView = (MapView) findViewById(R.id.mapView);[\/sourcecode]<\/p>\n<p><!--more-->While there are libraries available to simplify accessing resources, using Kotlin and the \u00a0Android Extension plugin simplifies resource access and is not dependent on runtime or annotations allowing full Kotlin code to display an <em>ArcGIS<\/em> Map in a <em>MapView<\/em>\u00a0with the following:<\/p>\n<p>[sourcecode language=&#8221;java&#8221;]<br \/>\nimport kotlinx.android.synthetic.main.activity_main.*<\/p>\n<p>class MainActivity : AppCompatActivity() {<br \/>\n    super.onCreate(savedInstanceState)<br \/>\n    setContentView(R.layout.activity_main)<\/p>\n<p>    val mMap = ArcGISMap(Basemap.Type.TOPOGRAPHIC, 34.056295, -117.195800, 16)<br \/>\n    mapView.map(map);<br \/>\n}<br \/>\n[\/sourcecode]<\/p>\n<p><strong>Using Kotlin Extensions<\/strong><\/p>\n<p>You enable the Kotlin Android Extensions Gradle plugin in your app projects <em>build.gradle<\/em> file:<\/p>\n<p>[sourcecode language=&#8221;java&#8221;]<br \/>\napply plugin: &#8216;com.android.application&#8217;<br \/>\napply plugin: &#8216;kotlin-android&#8217;<br \/>\n\/\/ add this for Kotlin Android Extensions<br \/>\napply plugin: &#8216;kotlin-android-extensions&#8217;<br \/>\n[\/sourcecode]<\/p>\n<p>You can import all widget properties for a specific layout in the file <em>activity_main.xml<\/em> with the following:<\/p>\n<p>[sourcecode language=&#8221;java&#8221;]import kotlinx.android.synthetic.main.activity_main.*[\/sourcecode]<\/p>\n<p>You can now invoke your <em>MapView<\/em> with the <em>id<\/em> name ..<\/p>\n<p>[sourcecode language=&#8221;java&#8221;]<br \/>\n&lt;!&#8211; MapView &#8211;&gt;<br \/>\n&lt;com.esri.arcgisruntime.mapping.view.MapView<br \/>\n    android_id=&quot;@+id\/mapView&quot;<br \/>\n    android_layout_width=&quot;fill_parent&quot;<br \/>\n    android_layout_height=&quot;fill_parent&quot;&gt;<br \/>\n&lt;\/com.esri.arcgisruntime.mapping.view.MapView&gt;<br \/>\n[\/sourcecode]<\/p>\n<p>.. without initializing with <em>findViewById<\/em>:<\/p>\n<p>[sourcecode language=&#8221;java&#8221;]mapView.map(ArcGISMap)[\/sourcecode]<\/p>\n<p>You can see Kotlin in action with ArcGIS Android in our MobileMapPackage demo on <a href=\"https:\/\/github.com\/Esri\/arcgis-runtime-demos-android\/tree\/master\/2016-UC\/MobleMapPackage\" target=\"_blank\">GitHub<\/a>. \u00a0We will be looking to make more Kotlin code available through the Android SDK so get up to speed with Kotlin <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/\" target=\"_blank\">here<\/a> as once you start using Kotlin it will be hard to return back to Java for developing Android apps!<\/p>\n"}],"authors":[{"ID":3721,"user_firstname":"Dan","user_lastname":"O'Neill","nickname":"dano","user_nicename":"dano","display_name":"Dan O'Neill","user_email":"doneill@esri.com","user_url":"","user_registered":"2018-03-02 00:15:19","user_description":"","user_avatar":"<img alt='' src='https:\/\/secure.gravatar.com\/avatar\/ec0134b4386a3b69a9d51a5bca99dc765578aa8fb1c3817b176f1d7d64ef3b1c?s=96&#038;d=blank&#038;r=g' srcset='https:\/\/secure.gravatar.com\/avatar\/ec0134b4386a3b69a9d51a5bca99dc765578aa8fb1c3817b176f1d7d64ef3b1c?s=192&#038;d=blank&#038;r=g 2x' class='avatar avatar-96 photo' height='96' width='96' loading='lazy' decoding='async'\/>"}]},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.9 (Yoast SEO v25.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Using Kotlin Android Extensions with ArcGIS Android<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/field-mobility\/field-mobility\/using-kotlin-android-extensions-with-arcgis-android\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Using Kotlin Android Extensions with ArcGIS Android\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.esri.com\/arcgis-blog\/products\/field-mobility\/field-mobility\/using-kotlin-android-extensions-with-arcgis-android\" \/>\n<meta property=\"og:site_name\" content=\"ArcGIS Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/esrigis\/\" \/>\n<meta property=\"article:modified_time\" content=\"2018-03-26T21:13:01+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@ESRI\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":[\"Article\",\"BlogPosting\"],\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/field-mobility\/field-mobility\/using-kotlin-android-extensions-with-arcgis-android#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/field-mobility\/field-mobility\/using-kotlin-android-extensions-with-arcgis-android\"},\"author\":{\"name\":\"Dan O'Neill\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/8931d16ca5a71c952f73e7efe9133bb6\"},\"headline\":\"Using Kotlin Android Extensions with ArcGIS Android\",\"datePublished\":\"2017-05-19T12:12:03+00:00\",\"dateModified\":\"2018-03-26T21:13:01+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/field-mobility\/field-mobility\/using-kotlin-android-extensions-with-arcgis-android\"},\"wordCount\":7,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"keywords\":[\"Android\"],\"articleSection\":[\"Field Operations\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/field-mobility\/field-mobility\/using-kotlin-android-extensions-with-arcgis-android#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/field-mobility\/field-mobility\/using-kotlin-android-extensions-with-arcgis-android\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/field-mobility\/field-mobility\/using-kotlin-android-extensions-with-arcgis-android\",\"name\":\"Using Kotlin Android Extensions with ArcGIS Android\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\"},\"datePublished\":\"2017-05-19T12:12:03+00:00\",\"dateModified\":\"2018-03-26T21:13:01+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/field-mobility\/field-mobility\/using-kotlin-android-extensions-with-arcgis-android#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/field-mobility\/field-mobility\/using-kotlin-android-extensions-with-arcgis-android\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/field-mobility\/field-mobility\/using-kotlin-android-extensions-with-arcgis-android#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.esri.com\/arcgis-blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Using Kotlin Android Extensions with ArcGIS Android\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/\",\"name\":\"ArcGIS Blog\",\"description\":\"Get insider info from Esri product teams\",\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.esri.com\/arcgis-blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\",\"name\":\"Esri\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png\",\"contentUrl\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png\",\"width\":400,\"height\":400,\"caption\":\"Esri\"},\"image\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/esrigis\/\",\"https:\/\/x.com\/ESRI\",\"https:\/\/www.linkedin.com\/company\/5311\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/8931d16ca5a71c952f73e7efe9133bb6\",\"name\":\"Dan O'Neill\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ec0134b4386a3b69a9d51a5bca99dc765578aa8fb1c3817b176f1d7d64ef3b1c?s=96&d=blank&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ec0134b4386a3b69a9d51a5bca99dc765578aa8fb1c3817b176f1d7d64ef3b1c?s=96&d=blank&r=g\",\"caption\":\"Dan O'Neill\"},\"url\":\"\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Using Kotlin Android Extensions with ArcGIS Android","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.esri.com\/arcgis-blog\/products\/field-mobility\/field-mobility\/using-kotlin-android-extensions-with-arcgis-android","og_locale":"en_US","og_type":"article","og_title":"Using Kotlin Android Extensions with ArcGIS Android","og_url":"https:\/\/www.esri.com\/arcgis-blog\/products\/field-mobility\/field-mobility\/using-kotlin-android-extensions-with-arcgis-android","og_site_name":"ArcGIS Blog","article_publisher":"https:\/\/www.facebook.com\/esrigis\/","article_modified_time":"2018-03-26T21:13:01+00:00","twitter_card":"summary_large_image","twitter_site":"@ESRI","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/field-mobility\/field-mobility\/using-kotlin-android-extensions-with-arcgis-android#article","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/field-mobility\/field-mobility\/using-kotlin-android-extensions-with-arcgis-android"},"author":{"name":"Dan O'Neill","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/8931d16ca5a71c952f73e7efe9133bb6"},"headline":"Using Kotlin Android Extensions with ArcGIS Android","datePublished":"2017-05-19T12:12:03+00:00","dateModified":"2018-03-26T21:13:01+00:00","mainEntityOfPage":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/field-mobility\/field-mobility\/using-kotlin-android-extensions-with-arcgis-android"},"wordCount":7,"commentCount":0,"publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"keywords":["Android"],"articleSection":["Field Operations"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/field-mobility\/field-mobility\/using-kotlin-android-extensions-with-arcgis-android#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/field-mobility\/field-mobility\/using-kotlin-android-extensions-with-arcgis-android","url":"https:\/\/www.esri.com\/arcgis-blog\/products\/field-mobility\/field-mobility\/using-kotlin-android-extensions-with-arcgis-android","name":"Using Kotlin Android Extensions with ArcGIS Android","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#website"},"datePublished":"2017-05-19T12:12:03+00:00","dateModified":"2018-03-26T21:13:01+00:00","breadcrumb":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/field-mobility\/field-mobility\/using-kotlin-android-extensions-with-arcgis-android#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/field-mobility\/field-mobility\/using-kotlin-android-extensions-with-arcgis-android"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/field-mobility\/field-mobility\/using-kotlin-android-extensions-with-arcgis-android#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.esri.com\/arcgis-blog\/"},{"@type":"ListItem","position":2,"name":"Using Kotlin Android Extensions with ArcGIS Android"}]},{"@type":"WebSite","@id":"https:\/\/www.esri.com\/arcgis-blog\/#website","url":"https:\/\/www.esri.com\/arcgis-blog\/","name":"ArcGIS Blog","description":"Get insider info from Esri product teams","publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.esri.com\/arcgis-blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization","name":"Esri","url":"https:\/\/www.esri.com\/arcgis-blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png","contentUrl":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png","width":400,"height":400,"caption":"Esri"},"image":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/esrigis\/","https:\/\/x.com\/ESRI","https:\/\/www.linkedin.com\/company\/5311\/"]},{"@type":"Person","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/8931d16ca5a71c952f73e7efe9133bb6","name":"Dan O'Neill","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ec0134b4386a3b69a9d51a5bca99dc765578aa8fb1c3817b176f1d7d64ef3b1c?s=96&d=blank&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ec0134b4386a3b69a9d51a5bca99dc765578aa8fb1c3817b176f1d7d64ef3b1c?s=96&d=blank&r=g","caption":"Dan O'Neill"},"url":""}]}},"text_date":"May 19, 2017","author_name":"Dan O'Neill","author_page":false,"custom_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/08\/Newsroom-Keyart-Wide-1920-x-1080.jpg","primary_product":"ArcGIS Runtime SDK for Android","tag_data":[{"term_id":23441,"name":"Android","slug":"android","term_group":0,"term_taxonomy_id":23441,"taxonomy":"post_tag","description":"","parent":0,"count":86,"filter":"raw"}],"category_data":[{"term_id":23261,"name":"Field Operations","slug":"field-mobility","term_group":0,"term_taxonomy_id":23261,"taxonomy":"category","description":"","parent":0,"count":626,"filter":"raw"}],"product_data":[{"term_id":36881,"name":"ArcGIS Runtime SDK for Android","slug":"api-for-android","term_group":0,"term_taxonomy_id":36881,"taxonomy":"product","description":"","parent":36601,"count":65,"filter":"raw"},{"term_id":36601,"name":"Developers","slug":"developers","term_group":0,"term_taxonomy_id":36601,"taxonomy":"product","description":"","parent":0,"count":781,"filter":"raw"}],"primary_product_link":"https:\/\/www.esri.com\/arcgis-blog\/?s=#&products=api-for-android","_links":{"self":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/76971","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/users\/3721"}],"replies":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/comments?post=76971"}],"version-history":[{"count":0,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/76971\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/media?parent=76971"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/categories?post=76971"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/tags?post=76971"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/industry?post=76971"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/product?post=76971"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}