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?

Foi útil?

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" />
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top