Nesse post vou falar de mais uma lib famosa entre os desenvolvedores Android.
Butter Knife (http://jakewharton.github.io/butterknife/)
Com ela, você não precisa mais utilizar o bom e velho findViewByid(int) e nem o setOnClickListener ou setOnItemClickListener.
Adicione a dependência no seu build.gradle.
dependencies { ... compile 'com.jakewharton:butterknife:6.0.0' }Depois é só utilizar na sua activity.
public class MainActivity extends ActionBarActivity { @InjectView(R.id.edtTexto) EditText editText; @InjectView(R.id.txtManteiga) TextView txtManteiga; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.inject(this); } @OnClick(R.id.btnFaca) public void meuClick(View v){ txtManteiga.setText(editText.getText()); } }Partindo do presuposto que temos um EditText, um TextView e um Button, com os respectivos IDs definidos como edtTexto, txtManteiga e btnFaca. O código anterior utiliza a anotação @InjectView para inicializar os componentes após a chamada ButterKnife.inject(this).
Um outro detalhe aqui é o evento de click que podemos definir com a anotação @OnClick.
Podemos utilizar o @Inject não apenas em Activities, mas em qualquer lugar passando a View como parâmetro.
View view = inflater.inflate( R.layout.meu_layout, container, false); ButterKnife.inject(this, view);O código anterior, poderia estar, por exemplo em um Fragment ou no construtor de um ViewHolder de um adapter.
É importante resetar a injeção das views em Fragments, e isso deve ser feito preferencialmente no onDestroyView().
@Override public void onDestroyView() { super.onDestroyView(); ButterKnife.reset(this); }Também é possível associar evento de click em itens de uma ListView.
@OnItemSelected(R.id.list_view) void onItemSelected(int position) { // TODO ... }Qualquer dúvida, deixem seus comentários.
4br4ç05,
nglauber