Tengo un formulario de Android que necesita actualizarse en función de ciertas selecciones. La forma se compone actualmente de 2 Spinners (A y B). Spinner B no se crea hasta que se hace la selección de Spinner A. Después de realizar la selección, B se mostrará en la vista y su contenido se rellenará dinámicamente en función de la selección de A. Aquí está mi código:Android Spinner - Cómo seleccionar la lista predeterminada para ninguno
public class MyForm extends Activity
{
private final int SEL_ACTIVATE = 0;
private final int SEL_DEACTIVATE = 1;
private static final String[] actionList = {"Activate", "Deactivate" };
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
table = (TableLayout) findViewById(R.id.table);
showListA(table);
}
public void showListA(View v)
{
rowAction = new TableRow(this);
Spinner spinner = new Spinner(this);
spinner.setPrompt("Select...");
spinner.setOnItemSelectedListener(
new OnItemSelectedListener()
{
public void onItemSelected(AdapterView<?> parent, View v, int position, long id)
{
switch (position)
{
case SEL_ACTIVATE:
case SEL_DEACTIVATE:
showListB(v);
break;
}
}
public void onNothingSelected(AdapterView<?> arg0)
{
// TODO Auto-generated method stub
}
});
ArrayAdapter<String> adapter = new ArrayAdapter<String> (this, android.R.layout.simple_spinner_item, actionList);
adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
spinner.setAdapter(adapter);
rowAction.addView(tvAction);
rowAction.addView(spinner);
table.addView(rowAction, new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
}
...
}
Este código funciona correctamente. Cuando se seleccionan "Activar" o "Desactivar" de la lista, se ejecuta showListB()
que es muy similar a showListA()
en la forma en que crea una nueva fila que contiene Etiqueta y Spinner.
El problema es que, de forma predeterminada, "Activate" se muestra en el Spinner que ejecuta showListB()
y de inmediato, la segunda parte del formulario se crea en función de la opción "Activar". La única solución que se me ocurre es la de añadir un tercer campo a la Spinner así:
private static final String[] actionList = {"None", "Activate", "Deactivate" };
...
switch (position)
{
case SEL_NONE:
break;
case SEL_ACTIVATE:
case SEL_DEACTIVATE:
showListB(v);
break;
}
Esto funciona ... pero no quiero una tercera opción en la lista. Solo quiero que, de manera predeterminada, esté en blanco o muestre algún tipo de texto 'de aviso' que no sea una opción en la lista una vez que se presione. es posible?
Gracias
EDIT:
contenido xml:
<Spinner
android:id="@+id/spinnerAction"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
Proporcione los motivos cuando crea que la respuesta no es útil (-1), de esa forma todos pueden entender por qué esta respuesta no es buena y ¡mostrar la mejor manera de hacerlo! Gracias. – TheCottonSilk
Para aclarar, esto funciona porque está configurando el 'OnItemSelectedListener' ** después de que ** haya configurado correctamente el' Adaptador'. –
¿Qué es la variable chunkSize? – CACuzcatlan