Cómo seleccionar varios elementos en ListView en android.Seleccionar múltiples elementos en ListView
Respuesta
No puede "seleccionar" varios elementos en un ListView
. Puede usar CHOICE_MODE_MULTIPLE
y marcar elementos múltiples en un ListView
.
En realidad se puede;) Es solo una cuestión de experiencia del usuario, ¿no?
Prueba de esto, (1) para el control de lista establece
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
listView.setItemsCanFocus(false);
(2) definir elemento de la lista como
<CheckedTextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:textAppearance="?android:attr/textAppearanceLarge"
android:gravity="center_vertical"
android:paddingLeft="6dip"
android:paddingRight="6dip"
android:checkMark="?android:attr/listChoiceIndicatorMultiple"
android:background="@drawable/txt_view_bg" />
Este es el mismo que android.R.layout.simple_list_item_multiple_choice
excepto android:background="@drawable/txt_view_bg
(3) Y defina drawable txt_view_bg.xml como
<item android:drawable="@drawable/selected"
android:state_checked="true" />
<item android:drawable="@drawable/not_selected" />
Nota: - La mejor forma de manejar opción múltiple es rastrear las opciones de su auto-con el elemento clic clic, en lugar de en función de su estado en la lista.
I suponer que los elementos del artículo arriba están en un elemento selector, y que "seleccionado" y "not_selected" son dibujables suministrados por el usuario (como una imagen). ¿Hay alguna manera de usar las casillas de verificación de la plataforma? – Diederik
Para usar las casillas de verificación de la plataforma, elimine el atributo de fondo y omita el punto (3). Aunque los cuadros aparecen para mí, lamentablemente no puedo verificar la casilla. Solo puedo hacerlo a través del xml usando el atributo android: checked para establecer un valor predeterminado, pero no puedo cambiarlo en tiempo de ejecución al tocarlo. – faizal
y para conseguirlo:
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Log.d(getLocalClassName(), "onItemClick(" + view + ","
+ position + "," + id + ")");
}
});
Paso 1: setAdapter a su vista de lista.
listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, GENRES));
Paso 2: modo de elección conjunto para listview .La segunda línea de debajo de código representa que casilla de verificación debe ser revisado.
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
listView.setItemChecked(2, true);
listView.setOnItemClickListener(this);
private static String[] GENRES = new String[] {
"Action", "Adventure", "Animation", "Children", "Comedy", "Documentary", "Drama",
"Foreign", "History", "Independent", "Romance", "Sci-Fi", "Television", "Thriller"
};
Paso 3: vistas marcados se devuelven en SparseBooleanArray, por lo que podría utilizar el siguiente código para obtener la clave o values.The a continuación muestra simplemente muestran los nombres seleccionados en una sola cadena.
@Override
public void onItemClick(AdapterView<?> adapter, View arg1, int arg2, long arg3)
{
SparseBooleanArray sp=getListView().getCheckedItemPositions();
String str="";
for(int i=0;i<sp.size();i++)
{
str+=GENRES[sp.keyAt(i)]+",";
}
Toast.makeText(this, ""+str, Toast.LENGTH_SHORT).show();
}
si deselecciona un artículo, continuará apareciendo en el brindis. Entonces ... si selecciona 3 elementos, luego los deselecciona y elige 1 otro elemento, la cadena contendrá los 4 elementos, incluso solo 1 elemento seleccionado. No puedo explicar por qué, porque siempre tenemos un nuevo String = "". ¿El 'getCheckedItemPositions()' almacena todos los valores que se han seleccionado? pero sería extraño. Sería bueno resolver esto, lo he intentado, pero hasta saber que no podría resolverlo. Por lo tanto, si alguien sabe, comparta la solución. – AlexAndro
Este ejemplo almacena los valores que ha marcado y los muestra en un brindis.Y se actualiza cuando se quita la marca de artículos http://android-coding.blogspot.ro/2011/09/listview-with-multiple-choice.html
Muy útil, ¡gracias! – Hugo
Tienes que seleccionar la opción de ArrayAdapter
:
ArrayAdapter<String> adapter = new ArrayAdapter<String>
(this, android.R.layout.simple_list_item_single_choice, countries);
para "actualizar" el mensaje de pan tostado después desactivando algunos elementos, sólo hay que poner esta línea dentro del bucle:
if (sp.valueAt(i))
por lo que los resultados:
for(int i=0;i<sp.size();i++)
{
if (sp.valueAt(i))
str+=names[sp.keyAt(i)]+",";
}
La mejor manera es tener una barra de acción contextual con vista de lista de selección múltiple, se puede hacer vista de lista como multiselect usando el siguiente código
listview.setChoiceMode(AbsListView.CHOICE_MODE_MULTIPLE_MODAL);
Y ahora establecido oyente multichoice para Listview, Se puede ver la aplicación completa de vista de lista de selección múltiple en Android multi select listview
es muy simple,
listViewRequests.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
**AppCompatCheckedTextView checkBox = (AppCompatCheckedTextView) view;**
Log.i("CHECK",checkBox.isChecked()+""+checkBox.getText().toString());**
}
});
- 1. Seleccionar todos los elementos dentro de ListView
- 2. Cómo seleccionar múltiples elementos usando CSS
- 3. Seleccionar elementos múltiples de una lista
- 4. Android ListView Seleccionar animación
- 5. seleccionar elementos múltiples de 3 en el elemento padre
- 6. WPF ListView Seleccionar programáticamente elemento
- 7. Iterar elementos ListView en Android
- 8. Android deshabilitar elementos listview
- 9. WPF ListView Selección de múltiples elementos de la Vista de lista
- 10. ¿Agregar elementos a un ListView?
- 11. WPF ListView Mostrar siempre los elementos completos
- 12. menú contextual para eliminar elementos en listview
- 13. Animar elementos de la lista en ListView
- 14. Agregar elementos a Listview en jqueryMobile
- 15. Eliminar elementos de ListView en Android
- 16. MVVM Agrupación de elementos en ListView
- 17. Crear columnas en ListView y agregar elementos
- 18. ¿Cómo seleccionar múltiples elementos que son elementos secundarios de un elemento dado?
- 19. Android: cómo seleccionar el elemento ListView programmatically
- 20. Selección de múltiples elementos en caché
- 21. MySQL Seleccionar Múltiples VALORES
- 22. Android: elementos ListView con múltiples botones en los que se puede hacer clic
- 23. ¿Cómo preseleccionar múltiples elementos listview/gridview en la aplicación C#/XAML windows 8?
- 24. Seleccionar Todos los elementos de un ListView (fila personalizada con casilla de verificación)
- 25. múltiples elementos en un vector
- 26. Will jQuery seleccionar elementos ocultos
- 27. Cómo evitar que elementos de ListView resalten en negro
- 28. CSS seleccionar próximos dos elementos
- 29. Seleccionar elementos sin ninguna clase
- 30. ¿Cuántos elementos puede almacenar un ListView?
es un gran y también la respuesta punto. Sin embargo, el problema que veo es que los documentos de la API, y la configuración CHOICE_MODE_MULTIPE, son tan engañosos y vagos que hacen pensar que tal cosa es seguramente posible. Lo hice durante unas 6 horas de golpes de cabeza hasta que leí esto. Además, al resaltar manualmente las filas de la vista de lista, se encontrará con los efectos secundarios del reciclaje. ¿Cómo es que las vistas de la lista comprobada son inmunes a esto? –