{"id":11478,"date":"2015-11-27T14:19:53","date_gmt":"2015-11-27T13:19:53","guid":{"rendered":"http:\/\/www.devapp.it\/wordpress\/?p=11478"},"modified":"2016-06-07T14:55:06","modified_gmt":"2016-06-07T12:55:06","slug":"data-binding-nello-sviluppo-di-applicazioni-android","status":"publish","type":"post","link":"https:\/\/www.devapp.it\/wordpress\/data-binding-nello-sviluppo-di-applicazioni-android\/","title":{"rendered":"Data Binding nello sviluppo di applicazioni Android"},"content":{"rendered":"<p>Il <strong>Data Binding<\/strong> \u00e8 una delle novit\u00e0 destinata a rivoluzionare lo <strong>sviluppo Android<\/strong>, soprattutto nel modo in cui un programmatore si &#8220;rivolge&#8221; all&#8217;interfaccia grafica: mette a disposizione una nuova libreria che al momento \u00e8 disponibile solo usando Android Studio 1.3 o superiori.<\/p>\n<p>A molti il termine Data Binding dice gi\u00e0 qualcosa, ad altri meno. Riepiloghiamone velocemente il significato partendo dalle origini.\u00a0Uno dei primi aspetti che si notano quando si inizia a <strong>realizzare applicazioni Java con Android SDK<\/strong> \u00e8 il dualismo che si crea nel progetto: codice Java, nella cartella <em>src<\/em>, per il funzionamento dinamico, ed interfacce utente progettate in XML nella cartella <em>res\/layout<\/em>. Ci\u00f2 comporta per prima cosa la necessit\u00e0 di fare in modo che il codice Java possa accedere alle componenti definite nel layout sfruttando come riferimenti gli id disseminati nei vari nodi XML: per chi viene dallo sviluppo web si tratta di una modalit\u00e0 di interazione simile a quella che si instaura tra elementi HTML e Javascript.\u00a0Il protagonista di queste ricerche \u00e8 l&#8217;usatissimo metodo <em>findViewById<\/em> dell&#8217;Activity di cui se ne sconsiglia l&#8217;abuso per motivi di efficienza nonostante la sua indispensabilit\u00e0.<\/p>\n<p>Il Data Binding permette stabilire collegamenti che rendano automatico il <strong>passaggio dei dati dai widget dell&#8217;interfaccia utente agli oggetti istanziati in Java<\/strong> e viceversa.<\/p>\n<p>Mettendola in termini di Model-View-Controller il Data Binding &#8220;aggangia&#8221; in maniera attiva le componenti della presentazione con la struttura a oggetti dell&#8217;app.<br \/>\nPer farne uso, \u00e8 necessario includere la seguente riga al nodo <em>dependencies<\/em> del file <em>build.gradle<\/em> del progetto:<\/p>\n<pre class=\"lang:default decode:true \">classpath 'com.android.databinding:dataBinder:1.+'<\/pre>\n<p>mentre nel <em>build.gradle<\/em> del modulo\u00a0richiederemo l&#8217;impiego di un ulteriore plugin apponendo la seguente dichiarazione a inizio file:<\/p>\n<pre class=\"lang:default decode:true \">apply plugin: 'com.android.databinding'<\/pre>\n<p>I passi per l&#8217;esecuzione pratica del Data Binding possono essere seguiti tramite il\u00a0tutorial presente nella <a href=\"http:\/\/developer.android.com\/tools\/data-binding\/guide.html\" target=\"_blank\">documentazione ufficiale\u00a0<\/a>.<\/p>\n<p>Vale la pena ricordare che la libreria \u00e8 attualmente in <strong>beta<\/strong>, il che significa che non \u00e8 consigliabile impiegarla in produzione in quanto\u00a0sar\u00e0 soggetta presumibilmente a dei cambiamenti,\u00a0ma soprattutto che la sua pubblicazione ha lo scopo di sollecitare feedback da parte dei\u00a0programmatori pertanto \u00e8 il momento proprio di sperimentarla, trarne delle considerazioni e, possibilmente, farne partecipe Google!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Il Data Binding \u00e8 una delle novit\u00e0 destinata a rivoluzionare lo sviluppo Android, soprattutto nel modo in&#8230;<\/p>\n","protected":false},"author":561,"featured_media":11563,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[8,534],"tags":[1541,1562,1563,917],"class_list":["post-11478","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-guide-varie","category-news","tag-android-studio","tag-creare-app-android","tag-data-binding-android","tag-mobile-developers"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/11478","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/users\/561"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/comments?post=11478"}],"version-history":[{"count":11,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/11478\/revisions"}],"predecessor-version":[{"id":12110,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/11478\/revisions\/12110"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media\/11563"}],"wp:attachment":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media?parent=11478"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/categories?post=11478"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/tags?post=11478"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}