Autore Topic: String che contiene int....  (Letto 876 volte)

Offline paul78

  • Utente normale
  • ***
  • Post: 359
  • Respect: +1
    • Mostra profilo
    • Android Code
  • Sistema operativo:
    Linux - Windows
String che contiene int....
« il: 06 Settembre 2013, 10:52:56 CEST »
0
ciao a tutti!!!

dovrei creare un spinner...in questo spinner dovrei inserire varie velocit6à che corrispondono in int...ma alla visualizzazione dovrei visualizzare delle string....mi spiego meglio...

Come Stringhe farò visualizzare:

velocità 1, velocità 2, velocità 3, velocità 4, velocità 4...etc....

a queste stringhe devo associare le int....cioè:

String velocità1 = int 10;
String velocità2 = int 20;
String velocità3 = int 30;

come faccio????

spero di essere stato chiaro!!!!

tutti possiamo programmare...basta volerlo!!!

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:String che contiene int....
« Risposta #1 il: 06 Settembre 2013, 11:56:35 CEST »
0
Da quello che so lo spinner di android non contiene coppie "valore" "label" come le select dell'html, per cui un modo rozzo di ovviare è farsi due array di lunghezza identica, per cui quando viene selezionata una certa label, prelevi il valore alla posizione corrispondente dell'altro array.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline paul78

  • Utente normale
  • ***
  • Post: 359
  • Respect: +1
    • Mostra profilo
    • Android Code
  • Sistema operativo:
    Linux - Windows
Re:String che contiene int....
« Risposta #2 il: 06 Settembre 2013, 12:15:48 CEST »
0
un esempio???

tutti possiamo programmare...basta volerlo!!!

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:String che contiene int....
« Risposta #3 il: 06 Settembre 2013, 12:20:35 CEST »
0
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
  • Respect: +152
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:String che contiene int....
« Risposta #4 il: 06 Settembre 2013, 12:22:37 CEST »
0
Da quello che so lo spinner di android non contiene coppie "valore" "label" come le select dell'html, per cui un modo rozzo di ovviare è farsi due array di lunghezza identica, per cui quando viene selezionata una certa label, prelevi il valore alla posizione corrispondente dell'altro array.

In realtà si può fare una finezza attraverso l'adapter che si associa allo spinner.

Si crea una classe che contiene label e value (o si può personalizzare come si vuole).
Codice (Java): [Seleziona]
private class ResourceSpinner{
        int value;
        String label;

        ResourceSpinner(int value,String label){
           this.value=value;
           this.label=label;
        }

        @Override
        public String toString() {
            return label;
        }
}

Si crea a codice un array di  ResourceSpinner.
Codice (Java): [Seleziona]
ResourceSpinner[] resources = new ResourceSpinner[3];
ResourceSpinner r1=new ResourceSpinner(10,"velocita1");
....
resources[0]=r1;
....

A questo punto si popola lo spinner con l'array appena creato.
Codice (Java): [Seleziona]
mSpinner = (Spinner) getActivity().findViewById(R.id.my_spinner);
ArrayAdapter<ResourceSpinner> adapter = new ArrayAdapter<ResourceSpinner>(getActivity(),android.R.layout.simple_spinner_item,resources);

// Specify the layout to use when the list of choices appears
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

// Apply the adapter to the spinner
mSpinner.setAdapter(adapter);

mSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                ResourceSpinner itemSelected= (ResourceSpinner) parent.getItemAtPosition(position);
                if (itemSelected!=null){
                            int velocita= itemSelected.value;
                             .............
                }
        }

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

       }
});

In questo schema è fondamentale il metodo  toString() di ResourceSpinner che permette di visualizzare la label.
« Ultima modifica: 06 Settembre 2013, 12:24:23 CEST da GabMarioPower »

Offline paul78

  • Utente normale
  • ***
  • Post: 359
  • Respect: +1
    • Mostra profilo
    • Android Code
  • Sistema operativo:
    Linux - Windows
Re:String che contiene int....
« Risposta #5 il: 06 Settembre 2013, 12:58:40 CEST »
0
ciao Gab!!!

proprio quello che volevo!!!!

ora mi studio l'esempio che mi hai scritto!!!!

grazie mille a tutti!!!

Post unito: 07 Settembre 2013, 10:13:25 CEST
ciao gab...ho riscritto il programma...ma quando avvio il virtual table....mi da errore!!!!

questo è quello che scrivo in xml:
Codice (Java): [Seleziona]
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <Spinner android:id="@+id/spinner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

</RelativeLayout>


mentre in activity scrivo questo:

Codice (Java): [Seleziona]
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;

public class MainActivity extends Activity {

        Spinner mSpinner;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
               
                ResourceSpinner[] resources = new ResourceSpinner[3];
                ResourceSpinner r1=new ResourceSpinner(10,"velocita1");
                resources[0]=r1;
               
                mSpinner = (Spinner)findViewById(R.id.spinner);
                ArrayAdapter<ResourceSpinner> adapter = new ArrayAdapter<ResourceSpinner>(this,android.R.layout.simple_spinner_item,resources);

                // Specify the layout to use when the list of choices appears
                adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

                // Apply the adapter to the spinner
                mSpinner.setAdapter(adapter);

                mSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                        @Override
                        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                                ResourceSpinner itemSelected= (ResourceSpinner) parent.getItemAtPosition(position);
                                if (itemSelected!=null){
                                            int velocita= itemSelected.value;

                                }
                        }

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

                       }               
                });
        }

        private class ResourceSpinner{
            int value;
            String label;

            ResourceSpinner(int value,String label){
               this.value=value;
               this.label=label;
            }

            @Override
            public String toString() {
                return label;
            }
        }

}

quando avvio si blocca!!! mi esce errore!!!

dove sbaglio??

Post unito: 07 Settembre 2013, 18:11:25 CEST
ciao gab...ho risolto...

grazie mille!!!!!

il cod giusto è questo:
Codice (Java): [Seleziona]
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;

public class MainActivity extends Activity {

        Spinner mSpinner;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
               
                ResourceSpinner[] resources = new ResourceSpinner[3];
                ResourceSpinner r1=new ResourceSpinner(10,"velocita1");
                ResourceSpinner r2=new ResourceSpinner(20,"velocita2");
                ResourceSpinner r3=new ResourceSpinner(30,"velocita3");
                resources[0]=r1;
                resources[1]=r2;
                resources[2]=r3;
               
                mSpinner = (Spinner)findViewById(R.id.spinner);
                ArrayAdapter<ResourceSpinner> adapter = new ArrayAdapter<ResourceSpinner>(this,android.R.layout.simple_spinner_item,resources);

                // Specify the layout to use when the list of choices appears
                adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

                // Apply the adapter to the spinner
                mSpinner.setAdapter(adapter);

                mSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                        @Override
                        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                                ResourceSpinner itemSelected= (ResourceSpinner) parent.getItemAtPosition(position);
                                if (itemSelected!=null){
                                            int velocita= itemSelected.value;
                                            Toast.makeText(getApplicationContext(),"Selezionato numero: " +velocita , Toast.LENGTH_LONG).show();
                                }
                        }

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

                       }                
                });
        }

        private class ResourceSpinner{
            int value;
            String label;

            ResourceSpinner(int value,String label){
               this.value=value;
               this.label=label;
            }

            @Override
            public String toString() {
                return label;
            }
        }

}

Sbagliavo ad aggiungere qesto:
ResourceSpinner[] resources = new ResourceSpinner[3];
                ResourceSpinner r1=new ResourceSpinner(10,"velocita1");
                ResourceSpinner r2=new ResourceSpinner(20,"velocita2");
                ResourceSpinner r3=new ResourceSpinner(30,"velocita3");
                resources[0]=r1;
                resources[1]=r2;
                resources[2]=r3;
« Ultima modifica: 07 Settembre 2013, 18:11:25 CEST da paul78, Reason: Merged DoublePost »
tutti possiamo programmare...basta volerlo!!!