Sunteți pe pagina 1din 3

Android Criar ListView com um boto em cada item Lucas Schiolin Silveira 20/05/2012 possvel encontrar vrios tutoriais

is e artigos na internet (inclusive no site de desenvolvimentodo Anrdroid http://developer.android.com) que explicam como criar uma ListView. Porm, amaioria mostra como exibir itens que contm elementos que no recebem foco naturalmente,como um texto, uma imagem, etc. provvel que exista a necessidade de exibir elementos que recebem foco em um item dessalista, como botes, caixas de checagem, etc. Intuitivamente, no se v problemas em colocar esses elementos no layout do item da lista, mas eles existem.O Android no permite que um elemento focusable seja colocado dentro de um item da lista,que tambm focusable , e ambos continuem com essa propriedade. Nesse caso, ele desativaessa propriedade de todos os elementos focusable e a lista fica com um aspecto de somente-leitura.Para corrigir esse problema, algumas aes devem ser tomadas. Imagine que o item da listacriada tem um Button com id btnButton . No evento getView do adapter dessa ListView , deve ser includo um cdigo semelhante ao seguinte: Button b = (Button)listV.findViewById(R.id. btnButton );b.setClickable( true );b.setFocusable(

true );b.setBackgroundResource(android.R.drawable. menuitem_background );b.setOnClickListener( new OnClickListener() {@ Override public

void onClick(View v) { // implemente aqui o Evento click do botao}}); Essas instrues fazem com que esse elemento torne-se clicvel e focvel. O mtodo setBackgroundResource adiciona o highlight ao boto (aspecto alaranjado que o botoassume quando pressionado API 7). Tambm deve ser includo o evento click desseboto.O mtodo getView retorna a view correspondente ao item da lista. Se essas instrues tambmforem feitas no item que ser retornado pelo getView , ento o item da lista tambm se tornarclicvel, permitindo operaes diferentes ao selecionar o item e ao selecionar o boto contidonesse item.Note que, dessa forma, o evento click do item no ser mais tratado atravs do onItemClickListener do ListView em questo.Tambm preciso acrescentar a instruo setItemsCanFocus( true );

na ListView (mtodo getListView se estiver em uma ListActivity), para indicar que pode haver foco nos itens doListView.

S-ar putea să vă placă și