CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: Varioflex con ben 2 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: 9mm con ben 14 Thanks ricevuti negli ultimi sette giorni
Utente del mese: 9mm con ben 35 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 10 su 10
Discussione:

Estrapolare variabile da Spinner

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Androidiano L'avatar di brunoso52


    Registrato dal
    Mar 2012
    Messaggi
    135
    Smartphone
    85739815629

    Ringraziamenti
    7
    Ringraziato 23 volte in 22 Posts
    Predefinito

    Estrapolare variabile da Spinner

    Premesso che sono alle prime armi, stavo cimentandomi con un programmino semplice semplice.
    Ho realizzato due Spinner che contengono una serie di numeri prestabiliti, ora vorrei poter eseguire un'operazione matematica tra le due variabili selezionate. Il punto è che quando arrivo al calculate, non riesco ad estrapolare le due variabili Stringa per poi usarle nel calcolo.
    Grazie anticipatamente se qualcuno volesse completare il con il codice mancante per l'estrapolazione delle 2 Variabili.
    Allego lo script della MainActivity:

    package com.mycompany.spinner;

    import android.app.*;
    import android.os.*;
    import android.view.*;
    import android.widget.*;

    public class MainActivity extends Activity
    {
    private Spinner spinner1;
    private Spinner spinner2;
    private TextView totale1;

    private Button button1;

    private double dia1=0;
    private double dia2=0;


    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    initControls();
    }
    private void initControls() {
    //inizializzazione oggetti

    spinner1=(Spinner)findViewById(R.id.spinner1);
    spinner2=(Spinner)findViewById(R.id.spinner2);
    totale1=(TextView)findViewById(R.id.totale1);

    Spinner s1 = (Spinner) findViewById(R.id.spinner1);
    final ArrayAdapter<CharSequence> adapter1 = ArrayAdapter.createFromResource(this,
    R.array.diametro, android.R.layout.simple_spinner_item);
    adapter1.setDropDownViewResource(android.R.layout. simple_spinner_dropdown_item);
    s1.setAdapter(adapter1);

    Spinner s2 = (Spinner) findViewById(R.id.spinner2);
    final ArrayAdapter<CharSequence> adapter2 = ArrayAdapter.createFromResource(this,
    R.array.diametro, android.R.layout.simple_spinner_item);
    adapter2.setDropDownViewResource(android.R.layout. simple_spinner_dropdown_item);
    s2.setAdapter(adapter2);

    button1=(Button)findViewById(R.id.button1);
    button1.setOnClickListener(new Button.OnClickListener(){

    public void onClick(View v) {calculate();}});
    }

    //operazione di calcolo è questa parte che non riesco a compilare
    //vorrei estrapolare le due variabili spinner e eseguire una somma
    //per poi visualizzarne il totale


    private void calculate(){

    dia1=Double.parseDouble(spinner1.getAdapter().toSt ring());
    dia2=Double.parseDouble(spinner2.getAdapter().toSt ring());

    totale1.setText(Double.toString(dia1+dia2));

    }

    }
    //End

  2.  
  3. #2
    Androidiano L'avatar di iClaude76


    Registrato dal
    Oct 2012
    Località
    Trento
    Messaggi
    207
    Smartphone
    Galaxy S3, Nexus 7, G. Tab 2 7

    Ringraziamenti
    1
    Ringraziato 27 volte in 25 Posts
    Predefinito

    Secondo me l'errore è nel codice
    spinner1.getAdapter().toString()
    così recuperi il tuo ArrayAdapter e richiamando toString() non credo che ritorni l'elemento selezionato; probabilmente ritorna una stringa descrittrice dell'oggetto ArrayAdapter.

    Secondo me la cosa migliore è creare 2 variabili di istanza dia1 e dia2 e poi aggiungere un ascoltatore ai due spinner per ricavarne il valore.

    In pratica qualcosa di simile:

    yourSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {

    @Override
    public void onItemSelected(AdapterView<?> parent, View arg1, int position, long arg3) {

    dia1 = Double.parseDouble((String) (yourSpinner.getAdapter()).getItem(position));

    }

    @Override
    public void onNothingSelected(AdapterView<?> arg0) {

    }});

  4. #3
    Androidiano L'avatar di brunoso52


    Registrato dal
    Mar 2012
    Messaggi
    135
    Smartphone
    85739815629

    Ringraziamenti
    7
    Ringraziato 23 volte in 22 Posts
    Predefinito

    Grazie per la risposta immediata.
    Ho copiato e incollato quanto sopra, inserendolo tra
    s2.setAdapter(adapter2);

    e ......

    button1=(Button)findViewById(R.id.button1);

    gia questo non so se è esatto, comunque mi da questo errore Unknown entriy 'yourSpinner'
    Per favore puoi indicarmi esattamente dove va inserito lo script nel mio listato?
    e come eliminare l'errore?
    grazie di nuovo.

    Inviato dal mio GT-I9300 con Tapatalk 2

  5. #4
    Androidiano L'avatar di iClaude76


    Registrato dal
    Oct 2012
    Località
    Trento
    Messaggi
    207
    Smartphone
    Galaxy S3, Nexus 7, G. Tab 2 7

    Ringraziamenti
    1
    Ringraziato 27 volte in 25 Posts
    Predefinito

    Quote Originariamente inviato da brunoso52 Visualizza il messaggio
    Grazie per la risposta immediata.
    Ho copiato e incollato quanto sopra, inserendolo tra
    s2.setAdapter(adapter2);

    e ......

    button1=(Button)findViewById(R.id.button1);

    gia questo non so se è esatto, comunque mi da questo errore Unknown entriy 'yourSpinner'
    Per favore puoi indicarmi esattamente dove va inserito lo script nel mio listato?
    e come eliminare l'errore?
    grazie di nuovo.

    Inviato dal mio GT-I9300 con Tapatalk 2
    devi sostituire yourSpinner con i nomi dei tuoi 2 spinner...

  6. #5
    Androidiano L'avatar di brunoso52


    Registrato dal
    Mar 2012
    Messaggi
    135
    Smartphone
    85739815629

    Ringraziamenti
    7
    Ringraziato 23 volte in 22 Posts
    Predefinito

    Grazie ho risolto in questo modo:

    package com.mycompany.spinner;

    import android.app.*;
    import android.os.*;
    import android.view.*;
    import android.widget.*;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemSelectedListener;

    public class MainActivity extends Activity
    {
    private Spinner spinner1,spinner2,spinner3,spinner4;
    private TextView totale1;

    private Button button1;

    private double dia1=0,dia2=0,dia3=0,dia4=0;
    private double tot1=0;


    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    initControls();
    }
    private void initControls() {
    //inizializzazione oggetti

    spinner1=(Spinner)findViewById(R.id.spinner1);
    spinner2=(Spinner)findViewById(R.id.spinner2);
    spinner3=(Spinner)findViewById(R.id.spinner3);
    spinner4=(Spinner)findViewById(R.id.spinner4);

    totale1=(TextView)findViewById(R.id.totale1);

    Spinner s1 = (Spinner) findViewById(R.id.spinner1);
    final ArrayAdapter<CharSequence> adapter1 = ArrayAdapter.createFromResource(this,
    R.array.diametro, android.R.layout.simple_spinner_item);
    adapter1.setDropDownViewResource(android.R.layout. simple_spinner_dropdown_item);
    s1.setAdapter(adapter1);

    Spinner s2 = (Spinner) findViewById(R.id.spinner2);
    final ArrayAdapter<CharSequence> adapter2 = ArrayAdapter.createFromResource(this,
    R.array.diametro, android.R.layout.simple_spinner_item);
    adapter2.setDropDownViewResource(android.R.layout. simple_spinner_dropdown_item);
    s2.setAdapter(adapter2);

    Spinner s3 = (Spinner) findViewById(R.id.spinner3);
    final ArrayAdapter<CharSequence> adapter3 = ArrayAdapter.createFromResource(this,
    R.array.diametro, android.R.layout.simple_spinner_item);
    adapter3.setDropDownViewResource(android.R.layout. simple_spinner_dropdown_item);
    s3.setAdapter(adapter3);

    Spinner s4 = (Spinner) findViewById(R.id.spinner4);
    final ArrayAdapter<CharSequence> adapter4 = ArrayAdapter.createFromResource(this,
    R.array.diametro, android.R.layout.simple_spinner_item);
    adapter4.setDropDownViewResource(android.R.layout. simple_spinner_dropdown_item);
    s4.setAdapter(adapter4);

    s1.setOnItemSelectedListener(new OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent, View arg1, int position, long arg3) {
    dia1 = Double.parseDouble((String) (spinner1.getAdapter()).getItem(position));
    }
    @Override
    public void onNothingSelected(AdapterView<?> arg0) {
    }});

    s2.setOnItemSelectedListener(new OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent, View arg1, int position, long arg3) {
    dia2 = Double.parseDouble((String) (spinner2.getAdapter()).getItem(position));
    }
    @Override
    public void onNothingSelected(AdapterView<?> arg0) {
    }});

    s3.setOnItemSelectedListener(new OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent, View arg1, int position, long arg3) {
    dia3 = Double.parseDouble((String) (spinner3.getAdapter()).getItem(position));
    }
    @Override
    public void onNothingSelected(AdapterView<?> arg0) {
    }});

    s4.setOnItemSelectedListener(new OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent, View arg1, int position, long arg3) {
    dia4 = Double.parseDouble((String) (spinner4.getAdapter()).getItem(position));
    }
    @Override
    public void onNothingSelected(AdapterView<?> arg0) {
    }});

    button1=(Button)findViewById(R.id.button1);
    button1.setOnClickListener(new Button.OnClickListener(){

    public void onClick(View v) {calculate();}});
    }
    //operazione di calcolo
    private void calculate(){

    tot1=dia1+dia2+dia3+dia4;
    totale1.setText(Double.toString(tot1));
    }

    }

    Inviato dal mio GT-I9300 con Tapatalk 2

  7. #6
    Androidiano L'avatar di brunoso52


    Registrato dal
    Mar 2012
    Messaggi
    135
    Smartphone
    85739815629

    Ringraziamenti
    7
    Ringraziato 23 volte in 22 Posts
    Predefinito

    Buon pomeriggio, avrei un'altro problemino da sottoporre in riferimento al post sopra in questo specifico passaggio;
    @Override
    public void onItemSelected(AdapterView parent, View arg1, int position, long arg3) {
    dia1 = Double.parseDouble((String) (spinner1.getAdapter()).getItem(position));
    }
    La variabile dia1 nel contesto è un numero, ma se al posto di un numero avessi una striga da memorizzare, come drovei modificare il codice riferito al dia1= Double.parseDouble ( eccc. .
    Grazie in anticipo.

    Inviato dal mio GT-I9300 con Tapatalk 2

  8. #7
    Androidiano L'avatar di iClaude76


    Registrato dal
    Oct 2012
    Località
    Trento
    Messaggi
    207
    Smartphone
    Galaxy S3, Nexus 7, G. Tab 2 7

    Ringraziamenti
    1
    Ringraziato 27 volte in 25 Posts
    Predefinito

    Quote Originariamente inviato da brunoso52 Visualizza il messaggio
    Buon pomeriggio, avrei un'altro problemino da sottoporre in riferimento al post sopra in questo specifico passaggio;
    @Override
    public void onItemSelected(AdapterView parent, View arg1, int position, long arg3) {
    dia1 = Double.parseDouble((String) (spinner1.getAdapter()).getItem(position));
    }
    La variabile dia1 nel contesto è un numero, ma se al posto di un numero avessi una striga da memorizzare, come drovei modificare il codice riferito al dia1= Double.parseDouble ( eccc. .
    Grazie in anticipo.

    Inviato dal mio GT-I9300 con Tapatalk 2
    Basta usare:
    String miaString = (String) (spinner1.getAdapter().getItemAtPosition(position) );

  9. #8
    Androidiano L'avatar di brunoso52


    Registrato dal
    Mar 2012
    Messaggi
    135
    Smartphone
    85739815629

    Ringraziamenti
    7
    Ringraziato 23 volte in 22 Posts
    Predefinito

    Quote Originariamente inviato da iClaude76 Visualizza il messaggio
    Basta usare:
    String miaString = (String) (spinner1.getAdapter().getItemAtPosition(position) );
    Non funziona dice che getItem..... non è implementato in android, inoltre non mi fa accedere alla miaStringa, nonostante sia stata dichiarata. Grazie

    Inviato dal mio GT-I9300 con Tapatalk 2

  10. #9
    Androidiano L'avatar di iClaude76


    Registrato dal
    Oct 2012
    Località
    Trento
    Messaggi
    207
    Smartphone
    Galaxy S3, Nexus 7, G. Tab 2 7

    Ringraziamenti
    1
    Ringraziato 27 volte in 25 Posts
    Predefinito

    Quote Originariamente inviato da brunoso52 Visualizza il messaggio
    Non funziona dice che getItem..... non è implementato in android, inoltre non mi fa accedere alla miaStringa, nonostante sia stata dichiarata. Grazie

    Inviato dal mio GT-I9300 con Tapatalk 2
    Mi sa che il codice è un po' troppo ingarbugliato.
    Nei metodi onItemSelected usa:

    tuaStringa = (String) parent.getItemAtPosition(pos);
    oppure
    tuaStringa = parent.getItemAtPosition(pos).toString();

  11. #10
    Androidiano L'avatar di brunoso52


    Registrato dal
    Mar 2012
    Messaggi
    135
    Smartphone
    85739815629

    Ringraziamenti
    7
    Ringraziato 23 volte in 22 Posts
    Predefinito

    Quote Originariamente inviato da iClaude76 Visualizza il messaggio
    Mi sa che il codice è un po' troppo ingarbugliato.
    Nei metodi onItemSelected usa:

    tuaStringa = (String) parent.getItemAtPosition(pos);
    oppure
    tuaStringa = parent.getItemAtPosition(pos).toString();
    Prova e riprova finalmente ho trovato la soluzione qui sotto:

    // spinner campata tipo
    Spinner spinner = (Spinner)findViewById(R.id.spinner1);
    ArrayAdapter adapter = new ArrayAdapter(
    this,
    android.R.layout.simple_spinner_item,
    new String[]{"Appoggio semplice" ,"Campata terminale","Campata intermedia"}
    );
    spinner.setAdapter(adapter);
    spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
    public void onItemSelected(AdapterView adapter, View view,int pos, long id) {
    String selected = (String)adapter.getItemAtPosition(pos);
    if (selected =="Appoggio semplice" )
    {
    K = 1; }
    if (selected =="Campata terminale" )
    {
    K=1.3; }
    if (selected =="Campata intermedia" )
    {
    K=1.5; }
    text_K.setText(Double.toString(K));
    }
    public void onNothingSelected(AdapterView arg0) {}
    });

    Grazie comunque.

    Inviato dal mio GT-I9300 con Tapatalk 2
    Ultima modifica di brunoso52; 30-03-13 alle 18:16

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy