Data Binding Android - Levi Saturnino

100 visualizações

Publicada em

Uma breve descrição sobre e o que é Data Binding no Android.

Publicada em: Tecnologia
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
100
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
1
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Data Binding Android - Levi Saturnino

  1. 1. #IO16Extended #IO16Recife
  2. 2. +LeviSaturnino @levisaturnino levisaturnino@gmail.com
  3. 3. DATA BINDING Android - Levi Saturnino
  4. 4. A API de DataBinding foi lançada no Google I/O de 2015 e tem o intuito de facilitar a vida dos desenvolvedores removendo da Activity/Fragment muita da lógica de UI feitas por esses componentes. Apesar de ter sido lançado juntamente com o Android 6, a API de Data Binding é uma biblioteca separada do sistema operacional e pode ser utilizada a partir do Android 2.1 (API Level 7).
  5. 5. CONFIGURAÇÃO NO GRADLE Para configurar seu aplicativo para usar a ligação de dados, adicione o elemento dataBinding ao seu arquivo build.gradle no módulo de aplicação. Use o seguinte trecho de código para configurar a ligação de dados: android { .... dataBinding { enabled = true } }
  6. 6. Três coisas que por si só já valem a utilização do Data Binding são: (1) não utilizar findViewById; (2) associação de eventos a componentes ; (3) sincronização de valores do model para a view.
  7. 7. COM DATA BINDING
  8. 8. Exemplo de parametros strings.xml No xml <string name="resource1">Hello string: %1$s, and hello float: %2$.2f.</string> No Java String svalue = "test"; float sfloat= 3.1415926; String sresult = getString(R.string.resource1, svalue, sfloat);
  9. 9. Recursos Podemos acessar os recursos da aplicação normalmente. Se tivéssemos este texto no strings.xml <string name="nomeComSobrenome">%1$s %2$s</string> Poderiamos utilizar o recurso com o Data Binding da seguinte forma: android:text=”@{@string/nomeComSobrenome(usuario.nome,usuario.sobrenome)}” Todos os recursos podem ser acessados, mas alguns tem uma notação especial: @stringArray, @intArray, @animator, @color, @colorStateLis e @typedArray.
  10. 10. <string name="priceFormat">%1$.2f</string>
  11. 11. Passo a Passo para implementação do Data Binding
  12. 12. POJO USUARIO public class Usuario { public String nome; public String sobrenome; public Usuario(String nome, String sobrenome) { This.nome = nome; This.sobrenome = sobrenome; } }
  13. 13. Outro exemplo com BaseObservable import android.databinding.BaseObservable; import android.databinding.ObservableField; public class Usuario extends BaseObservable { public ObservableField<String> nome = new ObservableField<>(); public ObservableField<String> sobrenome = new ObservableField<>(); public Usuario(String nome, String sobrenome) { this.nome.set(nome); this.sobrenome.set(sobrenome); } }
  14. 14. Classe do Evento public class TratadorMagico { public boolean longClick(View v){ Log.d("Script", "longClick!"); return true; } public void click(View v){ Log.d("Script", "click!"); } }
  15. 15. Layout XML - ROOT <layout xmlns:android="http://schemas.android.com/apk/res/android"> <data> <variable name="usuario" type="dominando.android.databinding.Usuario" /> <variable name="tratador" type="dominando.android.databinding.TratadorMagico"/> </data>
  16. 16. <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{usuario.nome +' '+ usuario.sobrenome}" android:onClick="@{tratador.click}" android:onLongClick="@{tratador.longClick}"/> <EditText android:id="@+id/edtNome" android:layout_width="match_parent" android:layout_height="wrap_content" /> <EditText android:id="@+id/edtSobrenome" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> </layout>
  17. 17. Classe do MAIN public class MainActivity extends AppCompatActivity { Usuario usuario; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main); usuario = new Usuario("Levi", "Saturnino"); binding.setUsuario(usuario); binding.setTratador(new TratadorMagico()); }
  18. 18. Tela final
  19. 19. Referências Palestra sobre Data Binding no Android Dev Summit (em inglês) https://www.youtube.com/watch?v=NBbeQMOcnZ0 Hangout com o Neto Marin (Google Developer Advocate) https://www.youtube.com/watch?v=JWpn4yyIJxc Blog de Nelson Glauber http://www.nglauber.com.br/2016/05/android-data-binding.html Data Binding Guide (Documentação oficial) http://developer.android.com/intl/pt-br/tools/data-binding/guide.html

×