Autore Topic: Come fare per popolare uno spinner con dati salvati in un array di stringhe  (Letto 997 volte)

Offline aianne25

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG optimus one
  • Sistema operativo:
    windows 8
Ciao a tutti,

ho fatto mille ricerche su internet e nel forum ma non ho trovato nulla che mi potesse aiutare...
Ammetto che sono newbie nella programmazione android, quindi potrei fare una domanda di facile soluzione.
Vi spiego qual'è il mio problema:

prelevando dati da un sito web, devo mostrarli su schermo (e fin qui mi funziona) in delle TextView.
Nella stessa schermata, dopo queste TextView vorrei avere uno Spinner dove visualizzo tutti i link associati a quello che mostro su schermo (per poter così in caso aprire il link selezionato).
Questo è il mio file XML della vista:
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent" >

    <TextView
       android:id="@+id/riga_listview_titolo"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_centerHorizontal="true"
       android:gravity="center"
       android:paddingBottom="10dp"
       android:paddingLeft="5dp"
       android:paddingRight="5dp"
       android:paddingTop="10dp"
       android:text="@string/a"
       android:textAppearance="?android:attr/textAppearanceMedium"
       android:textColor="#FF6600" />
   
    <TextView
       android:id="@+id/label_descrizione"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_below="@+id/riga_listview_titolo"
       android:text="@string/label_descr"
       android:textSize="12sp"
       android:textColor="#888888" />

    <TextView
       android:id="@+id/riga_listview_descrizione"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_below="@+id/label_descrizione"
       android:paddingBottom="10dp"
       android:paddingLeft="5dp"
       android:paddingRight="5dp"
       android:text="@string/b"
       android:textAppearance="?android:attr/textAppearanceSmall" />
   
    <TextView
       android:id="@+id/label_synonym"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_below="@+id/riga_listview_descrizione"
       android:text="@string/label_synonym"
       android:textSize="12sp"
       android:textColor="#888888" />
   
    <TextView
       android:id="@+id/riga_listview_synonym"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_below="@+id/label_synonym"
       android:text="@string/c"
       android:textAppearance="?android:attr/textAppearanceSmall"
       android:paddingLeft="5dp"
                android:paddingRight="5dp"
                android:paddingBottom="10dp" />
   
    <TextView
       android:id="@+id/label_type"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_below="@+id/riga_listview_synonym"
       android:text="@string/label_type"
       android:textSize="12sp"
       android:textColor="#888888" />
   
    <TextView
       android:id="@+id/riga_listview_type"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_below="@+id/label_type"
       android:text="@string/d"
       android:textAppearance="?android:attr/textAppearanceSmall"
       android:paddingLeft="5dp"
                android:paddingRight="5dp"
                android:paddingBottom="10dp" />
   
    <TextView
       android:id="@+id/label_inclusion"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_below="@+id/riga_listview_type"
       android:text="@string/label_inclusion"
       android:textSize="12sp"
       android:textColor="#888888" />
   
    <TextView
       android:id="@+id/riga_listview_inclusion"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_below="@+id/label_inclusion"
       android:text="@string/e"
       android:textAppearance="?android:attr/textAppearanceSmall"
       android:paddingLeft="5dp"
                android:paddingRight="5dp"
                android:paddingBottom="10dp" />
   
    <TextView
       android:id="@+id/label_causalAgent"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_below="@+id/riga_listview_inclusion"
       android:text="@string/label_causalAgent"
       android:textSize="12sp"
       android:textColor="#888888" />
   
    <TextView
       android:id="@+id/riga_listview_causalAgent"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_below="@+id/label_causalAgent"
       android:text="@string/f"
       android:textAppearance="?android:attr/textAppearanceSmall"
       android:paddingLeft="5dp"
                android:paddingRight="5dp"
                android:paddingBottom="10dp" />
   
    <TextView
       android:id="@+id/label_selectChild"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_below="@+id/riga_listview_causalAgent"
       android:text="@string/label_selectChild"
       android:textSize="12sp"
       android:textColor="#888888" />

    <Spinner
       android:id="@+id/spinner1"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignParentLeft="true"
       android:layout_below="@+id/label_selectChild"
       android:prompt="@string/a"/>

</RelativeLayout>

Non riesco a capire come fare per poter visualizzare nello Spinner tutte le stringhe che ho salvate in un Array di stringhe.
C'è qualcuno che mi può fare un esempio per vedere come poterlo fare?
Spero si sia capito il mio problema...

Grazie fin d'ora.

Offline MikeKeepsOnShine

  • Utente junior
  • **
  • Post: 84
  • Respect: 0
    • mikekeepsonshine
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Fame , Samsung Galaxy Tab 2 7.0
  • Sistema operativo:
    Windows 7
Re:Come fare per popolare uno spinner con dati salvati in un array di stringhe
« Risposta #1 il: 09 Ottobre 2013, 11:21:41 CEST »
0
Allora, per popolare lo spinner devi creare l'adapter, tipo così:
Codice (Java): [Seleziona]
String[] opzioni = {"opzione1","opzione2"};
ArrayAdapter<String> spinner_adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,opzioni);

Poi, setti la tipologia di vista per lo spinner e gli assegni l'adapter:
Codice (Java): [Seleziona]
Spinner spinner;
//scegli l'aspetto dello spinner
spinner.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//assegni l'adapter
spinner.setAdapter(spinner_adapter);

Poi per gestire la scelta che fai con lo spinner, usa il metodo OnItemSelectedListener():
Codice (Java): [Seleziona]
spinner.setOnItemSelectedListener(new OnItemSelectedListener(){

                        @Override
                        public void onItemSelected(AdapterView<?> arg0, View arg1,
                                        int arg2, long arg3) {
                                // TODO Auto-generated method stub

                         }

                        @Override
                        public void onNothingSelected(AdapterView<?> arg0) {
                                // TODO Auto-generated method stub

                                }});

True perfection has to be imperfect

Offline mark92g

  • Nuovo arrivato
  • *
  • Post: 12
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    samsung galaxy next
  • Play Store ID:
    Shaze
Re:Come fare per popolare uno spinner con dati salvati in un array di stringhe
« Risposta #2 il: 10 Ottobre 2013, 12:01:51 CEST »
0
Ciao aianne25,
io ho risolto così:

Dentro il file strings.xml crei l'array di stringhe:
Codice (XML): [Seleziona]
<string-array name="nome_array">
        <item>Valore uno, posizione 0</item>
        <item>Valore due, posizione 1</item>
        <item>Valore tre, posizione 2</item>
</string-array>

Poi nel layout inserisci l'elemento spinner con l'array appena creato come testo:
Codice (XML): [Seleziona]
<Spinner
   android:id="@+id/id_mio_spinner"
   layout_width="match_parent"
   layout_height="wrap_content"
   entries="@array/nome_array" />


Poi nella tua activity:
Codice (Java): [Seleziona]
Spinner mySpinner = (Spinner) findViewById(R.id.id_mio_spinner);

// prendo il valore selezionato
mySpinner.getSelectedItem(); // prendo il valore dell'array
mySpinner.getSelectedItemPosition(); // prendo la posizione dell'array

// setto il valore che voglio
mySpinner.setSelection(posizione);

Spero di esserti stato d'aiuto.

Marco

Offline aianne25

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG optimus one
  • Sistema operativo:
    windows 8
Re:Come fare per popolare uno spinner con dati salvati in un array di stringhe
« Risposta #3 il: 15 Ottobre 2013, 11:40:08 CEST »
0
Grazie ad entrambi!
Siete stati di grande aiuto!