Editar: Bien, encontré una solución. No sé si es la solución adecuada, pero funciona correctamente. Agregado al código a continuación.Devolver valores de selección múltiple ListView
Estoy tratando de permitir que un usuario seleccione una cantidad de directorios de una lista de verificación y los devuelva al hacer clic en el botón "Enviar". Aquí hay un fragmento de mi código. Completa el ListView con todos los directorios en/sdcard /, y para la selección inicial (de cualquiera que elija) cuando envío, el registro muestra las opciones correctas devueltas. Sin embargo, si desactivo un elemento y vuelvo a hacer clic en "Enviar", todavía se muestra como si todos estuvieran seleccionados. ¿Debo escribir un controlador para desmarcar un artículo? Pensé que eso fue solucionado por la selección choiceMode? ¡Gracias!
private SparseBooleanArray a;
directoryList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, directoryArray));
submitButton = (Button)findViewById(R.id.submit_button);
submitButton.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
a = new SparseBooleanArray();
a.clear();
a = directoryList.getCheckedItemPositions();
for (int i = 0; i < a.size(); i++)
{
//added if statement to check for true. The SparseBooleanArray
//seems to maintain the keys for the checked items, but it sets
//the value to false. Adding a boolean check returns the correct result.
if(a.valueAt(i) == true)
Log.v("Returned ", directoryArray[a.keyAt(i)]);
}
}
});
Parece terriblemente ineficiente hacer el ciclo for y luego dentro del ciclo for for hacer una tecla En ... qué tan malo funciona keyAt? oh bien – JDPeckham
No entiendo la diferencia en este código ... parece ser funcionalmente idéntico al mío. – kcoppock
Oh, no sé por qué, eché de menos tu pregunta. No había una razón real para hacer una variable de clase para la SBA, solo era nuevo para Java y Android y lo hice estúpidamente. :) – kcoppock