Ho un modulo Android che deve aggiornarsi in base a determinate selezioni. Il modulo è attualmente composto da 2 Spinners (A e B). Spinner B non creato fino a quando la selezione di Spinner A non viene effettuata. Dopo aver effettuato la selezione, B verrà visualizzato nella vista e il contenuto sarà riempito dinamicamente in base alla selezione di A. Ecco il mio codice:Spinner Android - Come selezionare la lista predefinita su nessuna
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));
}
...
}
Questo codice funziona correttamente. Quando si seleziona "Attiva" o "Disattiva" dall'elenco, viene eseguito showListB()
che è molto simile a showListA()
in come crea una nuova riga che contiene Etichetta e Spinner.
Il problema è che, per impostazione predefinita, "Attiva" è visualizzato nello Spinner che esegue showListB()
e subito dopo il blocco, la seconda parte del modulo viene creata in base all'opzione "Attiva". L'unica soluzione che posso venire in mente è di aggiungere un terzo campo per la Spinner in questo modo:
private static final String[] actionList = {"None", "Activate", "Deactivate" };
...
switch (position)
{
case SEL_NONE:
break;
case SEL_ACTIVATE:
case SEL_DEACTIVATE:
showListB(v);
break;
}
Questo funziona ... ma non voglio una terza opzione nella lista. Voglio solo che, di default, sia vuoto o mostri una sorta di testo 'prompt' che non è un'opzione nella lista una volta che viene premuto. È possibile?
Grazie
EDIT:
contenuto XML:
<Spinner
android:id="@+id/spinnerAction"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
Si prega di fornire dei motivi quando si ritiene che la risposta non sia utile (-1), in questo modo tutti possono capire perché questa risposta non è buona e mostra il modo migliore per farlo! Grazie. – TheCottonSilk
Per chiarire, questo funziona perché stai impostando 'OnItemSelectedListener' ** dopo ** hai impostato' Adapter 'corretto? –
Qual è la variabile chunkSize? – CACuzcatlan