clicando lista personalizada com caixas
-
23-08-2019 - |
Pergunta
Eu povoada um ListActivity
de um Cursor
usando SimpleCursorAdapter
que começa outra atividade quando um dos itens da lista foi clicado. Eu também estou usando ViewBinder
fazer alguma transformação personalizada dos dados.
Eu quero adicionar um CheckBox
a cada linha na lista para que eu tenha mudado a vista e acrescentou um CheckBox
com a gravidade direita.
Adicionando o CheckBox
removeu a possibilidade de clicar sobre os itens. O método onListItemClick
eu estava substituindo em ListActivity
não é mais chamado quando você pressiona em um item da lista. Removendo o CheckBox
corrige isso. Por que isso?
Além disso, como posso definir a lista para que ele continua a executar a minha funcionalidade necessária se a parte principal do item da lista é clicado, mas têm funcionalidade adicional quando o CheckBox
no item é verificado? Irá definir uma obra onCheckedChangedListener
ou é a mesma instância vista reutilizado para cada item na lista?
Solução 2
Looks como SimpleCursorAdapter
é demasiado primitivo para o que eu queria alcançar.
Eu mudei para implementar CursorAdapter
e retornando uma nova visão usando o LayoutInflater
na minha implementação do método newView
.
public View newView(Context context, Cursor cursor, ViewGroup parent) {
return LayoutInflater.from(context).inflate(R.layout.alarm_row, parent, false);
}
Em Bindview Eu, então, definir um OnClickListener
personalizado para minha LinearLayout
principal e depois outro OnCheckedChangeListener
ao CheckBox
.
Para que tudo isto parece certo que eu tinha para definir o fundo do LinearLayout
a do andróide menuItem drawable:
android:background="@android:drawable/menuitem_background"
Outras dicas
Como explicado aqui , o clique ouvinte só funciona se nenhum outro ponto de vista é focusable
. A definição de seu CheckBox
para focusable="false"
deve fazer o truque:
<CheckBox android:focusable="false" />