2
Android – Criar ListView com um botão em cada item Lucas Schiolin Silveira – 20/05/2012 É possível encontrar vários tutoriais e artigos na internet (inclusive do Anrdroid – http://developer.android.com) que explicam como criar um maioria mostra como exibir itens que contém elementos que não recebem como um texto, uma imagem, etc. É provável que exista a necessidade de exibir elementos que recebem fo lista, como botões, caixas de checagem, etc. Intuitivamente, não se vê esses elementos no layout do item da lista, mas eles existem. O Android não permite que um elemento focusable seja colocado dentro de um item da que também é focusable , e ambos continuem com essa propriedade. Nesse caso, essa propriedade de todos os elementos focusable e a lista fica com um aspecto de so leitura. Para corrigir esse problema, algumas ações devem ser tomadas. Imagine criada tem um Button com id btnButton . No evento getView do adapter dessa ListView , deve ser incluído um código 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 instruções fazem com que esse elemento torne-se “clicável e focá setBackgroundResource adiciona o “highlight” ao botão (aspecto alaranjado q assume quando é pressionado – API 7). Também deve ser incluído o event botão. O método getView retorna a view correspondente ao item da lista. Se essas forem feitas no item que será retornado pelo getView , então o item da lista também se “clicável”, permitindo operações diferentes ao selecionar o item e ao nesse item. Note que, dessa forma, o evento click do item não será mais tratado at onItemClickListener do ListView em questão. Também é preciso acrescentar a instrução setItemsCanFocus(true); na ListView (método getListView se estiver em uma ListActivity), para indicar que pode haver f ListView.

Android – Criar ListView com um botão em cada item

Embed Size (px)

DESCRIPTION

Este artigo mostra, de maneira superficial, o que deve ser configurado para criar um ListView com um botão em cada item.

Citation preview

Android Criar ListView com um boto em cada itemLucas Schiolin Silveira 20/05/2012 possvel encontrar vrios tutoriais e artigos na internet (inclusive no site de desenvolvimento do Anrdroid http://developer.android.com) que explicam como criar uma ListView. Porm, a maioria 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 dessa lista, 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 desativa essa propriedade de todos os elementos focusable e a lista fica com um aspecto de somenteleitura. Para corrigir esse problema, algumas aes devem ser tomadas. Imagine que o item da lista criada 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 boto assume quando pressionado API 7). Tambm deve ser includo o evento click desse boto. O mtodo getView retorna a view correspondente ao item da lista. Se essas instrues tambm forem feitas no item que ser retornado pelo getView, ento o item da lista tambm se tornar clicvel, permitindo operaes diferentes ao selecionar o item e ao selecionar o boto contido nesse 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 do ListView.