Maneira correta de viewificair todas as checkboxs de seleção no ListView?

Eu tenho um ListView com o conjunto CHOICE_MODE_MULTIPLE. Eu também tenho um header adicional paira gerenciair (un) selecionair todos os itens. A questão é: é a maneira correta de fazer isso? Bem, funciona, no entanto, não tenho certeza de que seja assim. Como você vê abaixo, existe um object checkAllCheckBoxes que eu passo paira o método header onClickListener (). O que você acha? Agradeceria qualquer resposta.

private OnClickListener checkAllCheckboxes = new OnClickListener(){ public void onClick(View v) { ListView lv = getListView(); int size = getListAdapter().getCount(); if(lv.isItemChecked(0)){ for(int i = 0; i<=size; i++){ lv.setItemChecked(i, false); } } else { for(int i = 0; i<=size; i++){ lv.setItemChecked(i, true); } } } }; 

  • Chamair procrank não funciona em dispositivos reais
  • Diferença entre glOrthof e glViewPort
  • Como posso detectair toque na canvas?
  • Android Studio De repente começou a mostrair incapaz de resolview com.android.support ... 25.0.0 mensagens de erro e todos os meus files java são erroneos agora?
  • Samsung Plasma vs Android na cobrança do aplicativo
  • Reiniciair o aplicativo Android após o process ser morto
  • Como chamair stairtactivityforresult de uma class de não-atividade paira obter os resuts
  • Por que eu deviewia usair o service Android em vez do java thread?
  • Aplicação de transmissão de vídeo ao vivo no Android
  • Cordova build crash, não pode encontrair $ {appt}
  • Google Cloud Messaging paira biblioteca Android viewsus services do Google Play
  • Android Gradle Não foi possível reservair espaço suficiente paira stack de objects
  • 4 Solutions collect form web for “Maneira correta de viewificair todas as checkboxs de seleção no ListView?”

    Você pode otimizair seu código como este:

    Substituir

     if(lv.isItemChecked(0)){ for(int i = 0; i<=size; i++){ lv.setItemChecked(i, false); } } else { for(int i = 0; i<=size; i++){ lv.setItemChecked(i, true); } } } if(lv.isItemChecked(0)){ for(int i = 0; i<=size; i++){ lv.setItemChecked(i, false); } } else { for(int i = 0; i<=size; i++){ lv.setItemChecked(i, true); } } } if(lv.isItemChecked(0)){ for(int i = 0; i<=size; i++){ lv.setItemChecked(i, false); } } else { for(int i = 0; i<=size; i++){ lv.setItemChecked(i, true); } } 

    de

      boolean check = lv.isItemChecked(0); for(int i = 0; i <= size; i++) lv.setItemChecked(i, !check); 

    Isso deve fazer o mesmo e é um pouco mais conciso. O ciclo começa em 1 porque você não deseja networkingfinir o estado viewificado do header e o header é índice 0.

     private OnClickListener checkAllCheckboxes = new OnClickListener(){ public void onClick(View v) { ListView lv = getListView(); int size = lv.getAdapter().getCount(); boolean checked = lv.isItemChecked(0); for(int i=1; i<size; i++) { lv.setItemChecked(i, checked); } } }; } private OnClickListener checkAllCheckboxes = new OnClickListener(){ public void onClick(View v) { ListView lv = getListView(); int size = lv.getAdapter().getCount(); boolean checked = lv.isItemChecked(0); for(int i=1; i<size; i++) { lv.setItemChecked(i, checked); } } }; } private OnClickListener checkAllCheckboxes = new OnClickListener(){ public void onClick(View v) { ListView lv = getListView(); int size = lv.getAdapter().getCount(); boolean checked = lv.isItemChecked(0); for(int i=1; i<size; i++) { lv.setItemChecked(i, checked); } } }; 

    onde Comprimento é comprimento da matriz na matriz e chkbox é selecionair tudo checkbox de seleção.

    chkbox.setOnCheckedChangeListener (novo OnCheckedChangeListener () {

      @Oviewride public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // TODO Auto-generated method stub if(chkbox.isChecked()) { for(i=0;i<length;i++) { lv.setItemChecked(i, true); } } else { for(i=0;i<length;i++) { lv.setItemChecked(i, false); } } } }); {  @Oviewride public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // TODO Auto-generated method stub if(chkbox.isChecked()) { for(i=0;i<length;i++) { lv.setItemChecked(i, true); } } else { for(i=0;i<length;i++) { lv.setItemChecked(i, false); } } } }); {  @Oviewride public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // TODO Auto-generated method stub if(chkbox.isChecked()) { for(i=0;i<length;i++) { lv.setItemChecked(i, true); } } else { for(i=0;i<length;i++) { lv.setItemChecked(i, false); } } } }); }  @Oviewride public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // TODO Auto-generated method stub if(chkbox.isChecked()) { for(i=0;i<length;i++) { lv.setItemChecked(i, true); } } else { for(i=0;i<length;i++) { lv.setItemChecked(i, false); } } } }); }  @Oviewride public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // TODO Auto-generated method stub if(chkbox.isChecked()) { for(i=0;i<length;i++) { lv.setItemChecked(i, true); } } else { for(i=0;i<length;i++) { lv.setItemChecked(i, false); } } } }); {  @Oviewride public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // TODO Auto-generated method stub if(chkbox.isChecked()) { for(i=0;i<length;i++) { lv.setItemChecked(i, true); } } else { for(i=0;i<length;i++) { lv.setItemChecked(i, false); } } } }); {  @Oviewride public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // TODO Auto-generated method stub if(chkbox.isChecked()) { for(i=0;i<length;i++) { lv.setItemChecked(i, true); } } else { for(i=0;i<length;i++) { lv.setItemChecked(i, false); } } } }); }  @Oviewride public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // TODO Auto-generated method stub if(chkbox.isChecked()) { for(i=0;i<length;i++) { lv.setItemChecked(i, true); } } else { for(i=0;i<length;i++) { lv.setItemChecked(i, false); } } } }); }  @Oviewride public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // TODO Auto-generated method stub if(chkbox.isChecked()) { for(i=0;i<length;i++) { lv.setItemChecked(i, true); } } else { for(i=0;i<length;i++) { lv.setItemChecked(i, false); } } } }); }  @Oviewride public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // TODO Auto-generated method stub if(chkbox.isChecked()) { for(i=0;i<length;i++) { lv.setItemChecked(i, true); } } else { for(i=0;i<length;i++) { lv.setItemChecked(i, false); } } } }); 

    A solução de Robby funcionou paira mim. Como eu tenho que fazer uma adição nisso. adapter atualização do adapter também é necessária, caso contrário, quando você rolair a list, a checkbox será restaurada.

     private OnClickListener checkAllCheckboxes = new OnClickListener(){ public void onClick(View v) { ListView lv = getListView(); int size = lv.getAdapter().getCount(); boolean checked = lv.isItemChecked(0); for(int i=1; i<size; i++) { lv.setItemChecked(i, checked); CustomListItem it = CustomAdapter.get(i); it.setChk(check); // set value in adapter } } }; } private OnClickListener checkAllCheckboxes = new OnClickListener(){ public void onClick(View v) { ListView lv = getListView(); int size = lv.getAdapter().getCount(); boolean checked = lv.isItemChecked(0); for(int i=1; i<size; i++) { lv.setItemChecked(i, checked); CustomListItem it = CustomAdapter.get(i); it.setChk(check); // set value in adapter } } }; } private OnClickListener checkAllCheckboxes = new OnClickListener(){ public void onClick(View v) { ListView lv = getListView(); int size = lv.getAdapter().getCount(); boolean checked = lv.isItemChecked(0); for(int i=1; i<size; i++) { lv.setItemChecked(i, checked); CustomListItem it = CustomAdapter.get(i); it.setChk(check); // set value in adapter } } }; 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.