{"id":4223,"date":"2013-01-01T20:43:39","date_gmt":"2013-01-02T04:43:39","guid":{"rendered":"http:\/\/www.andreanolanusse.com\/pt\/?p=4223"},"modified":"2013-05-01T22:33:48","modified_gmt":"2013-05-02T05:33:48","slug":"android-findviewbyid-vs-injectview","status":"publish","type":"post","link":"http:\/\/www.andreanolanusse.com\/pt\/android-findviewbyid-vs-injectview\/","title":{"rendered":"Android findViewById vs @InjectView"},"content":{"rendered":"<p>O uso de findViewById em Android \u00e9 algo que considero inconveniente, ele acaba fazendo voc\u00ea escrever mais c\u00f3digo, com isso cresce o seu c\u00f3digo de forma desnecess\u00e1ria, dificulta a leitura, manuten\u00e7\u00e3o, etc. Entretanto temos uma solu\u00e7\u00e3o para este problema e que se chama @InjectView que \u00e9 parte do framework <a href=\"http:\/\/code.google.com\/p\/roboguice\/\" target=\"_blank\">RoboGuice<\/a>, este ir\u00e1 tornar nosso c\u00f3digo mais claro, menor e f\u00e1cil de manter ao substituirmos findViewById, vamos ver como funciona.<\/p>\n<p>Vamos supor que temos o EditText abaixo definido em nosso Activity.<\/p>\n<pre class=\"brush: xml\">\r\n<EditText android:text=\"Nome\" \r\n    android:id=\"@+id\/nomeEditText\"\r\n    android:layout_width=\"wrap_content\"\r\n    android:layout_height=\"wrap_content\"\/>\r\n<\/pre>\n<p>A forma de acesso atrav\u00e9s do findViewById ficaria assim:<\/p>\n<pre class=\"brush: java\">\r\nclass Main extends Activity { \r\n\r\n    public void onCreate(Bundle savedInstanceState) { \r\n        super.onCreate(savedInstanceState); \r\n        setContentView(R.layout.main);\r\n        EditText nome;\r\n        nome = (EditText) findViewById(R.id.nomeEditText);\r\n        nome.setText( \"Meu nome \u00e9 Jo\u00e3o\"); \r\n    } \r\n}\r\n<\/pre>\n<p>Para usar @InjectView nosso Activity passa a herdar de RoboActivity (n\u00e3o esque\u00e7a de baixar o RoboGuice <a href=\"http:\/\/code.google.com\/p\/roboguice\/source\/checkout\" target=\"_blank\">aqui<\/a>) ficando assim:<\/p>\n<pre class=\"brush: java\">\r\nclass Main extends RoboActivity { \r\n     @InjectView (R.id.nomeEditText)      EditText nome; \r\n\r\n    public void onCreate(Bundle savedInstanceState) { \r\n        super.onCreate(savedInstanceState); \r\n        setContentView(R.layout.main);\r\n        nome.setText( \"Meu nome \u00e9 Jo\u00e3o\" ); \r\n    } \r\n}\r\n<\/pre>\n<p>Desta forma n\u00e3o precisamos obter uma refer\u00eancia ao objeto &#8220;nome&#8221; toda vez que for necess\u00e1rio acess\u00e1-lo, pois o mesmo est\u00e1 sendo feito pela @InjectView. Em telas onde temos v\u00e1rios objetos a manuten\u00e7\u00e3o e leitura do c\u00f3digo ser\u00e1 mais f\u00e1cil como voc\u00ea pode ver no exemplo abaixo.<\/p>\n<pre class=\"brush: java\">\r\nclass Main extends RoboActivity { \r\n     @InjectView (R.id.nomeEditText)      EditText nome; \r\n     @InjectView (R.id.sobrenomeEditText) EditText sobrenome; \r\n     @InjectView (R.id.fotoImage)         ImageView foto; \r\n\r\n    public void onCreate(Bundle savedInstanceState) { \r\n        super.onCreate(savedInstanceState); \r\n        setContentView(R.layout.main);\r\n        nome.setText( \"Meu nome \u00e9 Jo\u00e3o\" ); \r\n        sobrenome.setText( \"Meu sobrenome \u00e9 Silva\" ); \r\n        foto.setImageBitmap( null ); \r\n    } \r\n}\r\n<\/pre>\n<p>Espero que esta pequena dica tenha ajudado.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>O uso de findViewById em Android \u00e9 algo que considero inconveniente, ele acaba fazendo voc\u00ea escrever mais c\u00f3digo, com isso cresce o seu c\u00f3digo de forma desnecess\u00e1ria, dificulta a leitura, manuten\u00e7\u00e3o, etc. Entretanto temos uma solu\u00e7\u00e3o para este problema e que se chama @InjectView que \u00e9 parte do framework RoboGuice, este ir\u00e1 tornar nosso c\u00f3digo [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":4224,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_s2mail":"no","footnotes":""},"categories":[89],"tags":[183],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v16.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Android findViewById vs @InjectView | Andreano Lanusse | Tecnologia e Desenvolvimento de Software<\/title>\n<meta name=\"description\" content=\"Saiba como tornar seu c\u00f3digo mais claro e de f\u00e1cil manuten\u00e7\u00e3o utilizando @InjectView como alternativa ao findViewById em desenvolvimento para Android\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/www.andreanolanusse.com\/pt\/android-findviewbyid-vs-injectview\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Android findViewById vs @InjectView | Andreano Lanusse | Tecnologia e Desenvolvimento de Software\" \/>\n<meta property=\"og:description\" content=\"Saiba como tornar seu c\u00f3digo mais claro e de f\u00e1cil manuten\u00e7\u00e3o utilizando @InjectView como alternativa ao findViewById em desenvolvimento para Android\" \/>\n<meta property=\"og:url\" content=\"http:\/\/www.andreanolanusse.com\/pt\/android-findviewbyid-vs-injectview\/\" \/>\n<meta property=\"og:site_name\" content=\"Andreano Lanusse | Tecnologia e Desenvolvimento de Software\" \/>\n<meta property=\"article:published_time\" content=\"2013-01-02T04:43:39+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2013-05-02T05:33:48+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2013\/01\/Android.png\" \/>\n\t<meta property=\"og:image:width\" content=\"200\" \/>\n\t<meta property=\"og:image:height\" content=\"234\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@andreanolanusse\" \/>\n<meta name=\"twitter:site\" content=\"@andreanolanusse\" \/>\n<meta name=\"twitter:label1\" content=\"Est. tempo de leitura\">\n\t<meta name=\"twitter:data1\" content=\"1 minuto\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#website\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/\",\"name\":\"Andreano Lanusse | Tecnologia e Desenvolvimento de Software\",\"description\":\"Andreano Lanusse blog - artigos, tutoriais e v&iacute;deos sobre tecnologia, desenvolvimento de software (Delphi XE4, C#, PHP, .NET) e t&eacute;cnicas de programa&ccedil;&atilde;o\",\"publisher\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"http:\/\/www.andreanolanusse.com\/pt\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"ImageObject\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/android-findviewbyid-vs-injectview\/#primaryimage\",\"inLanguage\":\"pt-BR\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2013\/01\/Android.png\",\"contentUrl\":\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2013\/01\/Android.png\",\"width\":200,\"height\":234},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/android-findviewbyid-vs-injectview\/#webpage\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/android-findviewbyid-vs-injectview\/\",\"name\":\"Android findViewById vs @InjectView | Andreano Lanusse | Tecnologia e Desenvolvimento de Software\",\"isPartOf\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/android-findviewbyid-vs-injectview\/#primaryimage\"},\"datePublished\":\"2013-01-02T04:43:39+00:00\",\"dateModified\":\"2013-05-02T05:33:48+00:00\",\"description\":\"Saiba como tornar seu c\\u00f3digo mais claro e de f\\u00e1cil manuten\\u00e7\\u00e3o utilizando @InjectView como alternativa ao findViewById em desenvolvimento para Android\",\"breadcrumb\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/android-findviewbyid-vs-injectview\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/www.andreanolanusse.com\/pt\/android-findviewbyid-vs-injectview\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/android-findviewbyid-vs-injectview\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/\",\"name\":\"In\\u00edcio\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/android-findviewbyid-vs-injectview\/#webpage\"}}]},{\"@type\":\"Article\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/android-findviewbyid-vs-injectview\/#article\",\"isPartOf\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/android-findviewbyid-vs-injectview\/#webpage\"},\"author\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\"},\"headline\":\"Android findViewById vs @InjectView\",\"datePublished\":\"2013-01-02T04:43:39+00:00\",\"dateModified\":\"2013-05-02T05:33:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/android-findviewbyid-vs-injectview\/#webpage\"},\"commentCount\":3,\"publisher\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\"},\"image\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/android-findviewbyid-vs-injectview\/#primaryimage\"},\"keywords\":[\"Android\"],\"articleSection\":[\"Android\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\/\/www.andreanolanusse.com\/pt\/android-findviewbyid-vs-injectview\/#respond\"]}]},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\",\"name\":\"Andreano Lanusse\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#personlogo\",\"inLanguage\":\"pt-BR\",\"url\":\"http:\/\/0.gravatar.com\/avatar\/6a9c6f73c7c480fb826c7303288abfd3?s=96&d=mm&r=g\",\"contentUrl\":\"http:\/\/0.gravatar.com\/avatar\/6a9c6f73c7c480fb826c7303288abfd3?s=96&d=mm&r=g\",\"caption\":\"Andreano Lanusse\"},\"logo\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#personlogo\"},\"sameAs\":[\"https:\/\/twitter.com\/andreanolanusse\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","_links":{"self":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/posts\/4223"}],"collection":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/comments?post=4223"}],"version-history":[{"count":0,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/posts\/4223\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/media\/4224"}],"wp:attachment":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/media?parent=4223"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/categories?post=4223"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/tags?post=4223"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}