2010-10-27 16 views
7

Ho uno spinner con un arrayadapter gestito in modo dinamico. quando viene visualizzato, il testo dello spinner mostra anche il pulsante di opzione. come faccio a liberarmi di questo pulsante radio? la freccia giù è tutta stracciata e schifo ... questo è il mio problema. NOTA: non sto parlando dei pulsanti di opzione visualizzati nell'elenco visualizzato quando seleziono il menu a discesa sulla casella di selezione.perché il mio spinner Android mostra il pulsante radio nella visualizzazione testo?

qui sono il frammento di codice appropriato ... paio di punti:

  • questo codice è nel costruttore di widget di che è una sottoclasse di Spinner
  • valore è un array di istanze di oggetti (passato quando il widget viene creato)
  • non ci sono risorse XML; tutti i widget vengono creati dinamicamente
  • pensando di dover "manipolare" il prompt, ho aggiunto setPrompt (...) nel costruttore e anche nel listener di eventi onitemclicked ... questo non ha avuto alcun effetto.

Q: cosa mi manca? mi sembra che mi manca qualche attributo dello Spinner che sta causando la visualizzazione del pulsante radio nella parte testuale dello spinner.

- snip codice -

public class ChoiceGroupImpl extends Spinner implements OnItemSelectedListener { 
    public ChoiceGroupImpl(Activity activity, WidgetContainer container, Value widget, AttributeImpl attributes, Object[] value, int selected) { 
... 
     adapter = new ArrayAdapter<CharSequence>(activity, R.layout.simple_spinner_dropdown_item); 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

     for (int i = 0; i < value.length; i++) 
      adapter.add(value[i].toString()); 
     if (attributes.isReadonly()) 
      setEnabled(false); 
     setAdapter(adapter); 
     setSelection(selected); 
     setPrompt(adapter.getItem(selected)); 
     setOnItemSelectedListener(this); 
... 
} 
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
     setPrompt(adapter.getItem(position)); 
     ((ToolkitImpl) Toolkit.getInstance()).hiddenCommand(container, "SelectionChanged"); 
    } 
... 

- end codice snip -

+0

Oh! BTW: Non sto sovrascrivendo nessuno dei layout View, disegno i metodi. –

risposta

15

uso simple_spinner_item invece di simple_spinner_dropdown_item durante la creazione adattatore

adapter = new ArrayAdapter<CharSequence>(activity, R.layout.simple_spinner_item); 
+1

Ah! quello ha fatto! sembra abbastanza semplice, non c'è da meravigliarsi se me lo sono perso! THX –

+2

ok allora .. accetta la risposta. – franklins

+0

grazie favoloso risposta ... –

18

Se si desidera mantenere la radio pulsante nella casella di selezione, ma non nella visualizzazione testo, quindi eseguire questa operazione:

adapter = new ArrayAdapter<CharSequence>(activity, android.R.layout.simple_spinner_item); 
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
+1

Questa è una soluzione più completa, IMO. – Ken

+0

whell done this risponde ad alcuni dei miei pensieri. Bella risposta. – John

+0

Il problema con questa soluzione è la casella di controllo visibile durante l'evidenziazione onClick –

Problemi correlati