Correcto manera de comprobar todas las casillas de verificación en ListView?

Tengo un ListView con el conjunto CHOICE_MODE_MULTIPLE. También tengo encabezado adicional para administrar (des) la selección de todos los elementos. La pregunta es: ¿es la manera correcta de hacer eso? Bueno, funciona, sin embargo no estoy seguro de que es la manera correcta. Como ves a continuación hay un objeto checkAllCheckBoxes que paso al método onClickListener () del encabezado. ¿Qué piensas? Estaría agradecido por cualquier respuesta.

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); } } } }; 

Puedes optimizar tu código de esta manera:

Reemplazar

 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); } } 

por

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

Esto debe hacer lo mismo y es un poco más conciso. El bucle comienza en 1 porque no desea restablecer el estado marcado del encabezado y el encabezado es el í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); } } }; 

Donde Longitud es la longitud del arreglo en el array y chkbox es seleccionar todo checkbox.

Chkbox.setOnCheckedChangeListener (nuevo OnCheckedChangeListener () {

  @Override 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); } } } }); 

La solución de Robby funcionó para mí. Como tengo que hacer una adición en eso. Actualización del adapter también es necesario, de lo contrario, cuando se desplaza la checkbox la lista se restaurará.

 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 } } }; 
  • Superposición de imagen en dos filas en una vista de lista
  • Listview normal y coloque el estilo de fondo en android
  • Vista de la lista de Android dentro de una vista de desplazamiento
  • Establezca onItemClick en Adaptador personalizado ListView
  • Cómo hacer que android listview desplazable?
  • El evento Onclick se realiza incluso con un clic largo
  • Vista de lista de Android setOnItemClickListener no funciona
  • Lista de paginación y CursorLoader
  • Margen del divisor de vista de lista
  • Cómo obtener la posición del elemento de la lista en el método onGesturePerformed?
  • Android adapter.getItem (position) .getItemId () no funciona (El método getId () no está definido para el tipo Object)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.