Autore Topic: Selezionare elemento spinner e rendere inattivo  (Letto 462 volte)

Offline leo87

  • Nuovo arrivato
  • *
  • Post: 33
  • Respect: +1
    • Mostra profilo
  • Sistema operativo:
    windows 8
Selezionare elemento spinner e rendere inattivo
« il: 09 Giugno 2013, 11:44:40 CEST »
0
Ciao a tutti.
Non riesco a capire dove sbaglio...Ho creato lo spinner che popolo con una stringa e voglio che al cliccare della stringa parte un task; il problema è che appena si apre l'activity mi seleziona in automatico la prima stringa e non aspetta che la seleziono io??
Il secondo problema è che non riesco a rendere inutilizzabile lo spinner dopo la selezione?

Codice (Java): [Seleziona]
            public void onResume(){
                super.onResume();
                setContentView(R.layout.city);
                   Spinner spinner = (Spinner)findViewById(R.id.testSpinner);
                        ArrayAdapter<String> adapter = new ArrayAdapter<String>(
                                        this,
                                        android.R.layout.simple_spinner_item,
                                        new String[]{"city"}
                                        );
                        spinner.setAdapter(adapter);
                        spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
                                @Override
                                public void onItemSelected(AdapterView<?> adapter, View view,int pos, long id) {
                                        String selected = (String)adapter.getItemAtPosition(pos);
                                        Toast.makeText(
                                                        getApplicationContext(),
                                                        "hai selezionato "+selected,
                                                        Toast.LENGTH_LONG
                                                ).show();
                                        city=selected;

                                 //mio asynctask
                                    Connect1 task1=new Connect1();
                                task1.execute();
                                }
                                public void onNothingSelected(AdapterView<?> arg0) {}});
                       

il primo problema lo posso risolvere mettendo in posizione 0 una stringa vuota ed inserire un if che mi controlla che stringa stò prendendo:
Codice (Java): [Seleziona]
public void onItemSelected(AdapterView<?> adapter, View view,int pos, long id) {
                                        String selected = (String)adapter.getItemAtPosition(pos);
                                        if(selected.equals("city")){
                                                Toast.makeText(getApplicationContext(),
                                                        "hai selezionato "+selected,
                                                        Toast.LENGTH_LONG
                                                ).show();
                                                city=selected;
                                                Connect1 task1=new Connect1();
                                                task1.execute();
                                        }

c'è qualche altre soluzione?
per il secondo problema??

« Ultima modifica: 09 Giugno 2013, 12:28:07 CEST da leo87 »

Offline NanoAndroide

  • Utente junior
  • **
  • Post: 63
  • Respect: +3
    • Google+
    • Mostra profilo
    • MeToo
  • Dispositivo Android:
    GT-S5570
  • Play Store ID:
    MeToo
  • Sistema operativo:
    Windows 7
Re:Selezionare elemento spinner e rendere inattivo
« Risposta #1 il: 09 Giugno 2013, 12:48:48 CEST »
0
c'è qualche altre soluzione?
per il secondo problema??

Come tutte le classi derivate da View, anche spinner dispone di dei metodi setVisibility() e setEnable().

Col primo puoi rendere lo spinner VISIBLE, INVISIBLE o GONE. Col secondo determini se è attivo oppure no...  ;-)

Offline leo87

  • Nuovo arrivato
  • *
  • Post: 33
  • Respect: +1
    • Mostra profilo
  • Sistema operativo:
    windows 8
Re:Selezionare elemento spinner e rendere inattivo
« Risposta #2 il: 09 Giugno 2013, 14:50:33 CEST »
0
grazie  :D
Quindi dopo che faccio partire la selezione della stringa inserisco:
spinner.setVisibility(1);
(dentro il metodo  onPostExecute del mio asynctask)?

Stò anche sercando di popolare lo spinner ma mi dà un errore.Dopo aver popolato il primo spinner faccio partire un thread che fa la connessione con il server e si prende un arrayList e questa lista deve popolare lo spinner1
Codice (Java): [Seleziona]
 protected class Connect1 extends  AsyncTask<Void,String,String>{
                private ArrayList<String> listaTipi=new ArrayList<String>();
                   protected String doInBackground(Void... params){
                        //connessione al server e ricezione listaTipi
               
                return city;
                }
  public void onPostExecute(String s) {
                          Spinner spinner1 = (Spinner)findViewById(R.id.spinner1);
                       
                                ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(    //mi dà l'errore nel costruttore, perchè??
                                                this,
                                                android.R.layout.simple_spinner_item,
                                                listaTipi
                                                );
                                spinner1.setAdapter( adapter1);
                                spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {
                             
                                        }
                                       
                                        public void onNothingSelected(AdapterView<?> arg0) {}});
                     



Post unito: 09 Giugno 2013, 16:18:16 CEST
grazie  :D
Quindi dopo che faccio partire la selezione della stringa inserisco:
spinner.setVisibility(1);
(dentro il metodo  onPostExecute del mio asynctask)?

Stò anche sercando di popolare lo spinner ma mi dà un errore.Dopo aver popolato il primo spinner faccio partire un thread che fa la connessione con il server e si prende un arrayList e questa lista deve popolare lo spinner1
Codice (Java): [Seleziona]
 protected class Connect1 extends  AsyncTask<Void,String,String>{
                private ArrayList<String> listaTipi=new ArrayList<String>();
                   protected String doInBackground(Void... params){
                        //connessione al server e ricezione listaTipi
               
                return city;
                }
  public void onPostExecute(String s) {
                          Spinner spinner1 = (Spinner)findViewById(R.id.spinner1);
                       
                                ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(    //mi dà l'errore nel costruttore, perchè??
                                                this,
                                                android.R.layout.simple_spinner_item,
                                                listaTipi
                                                );
                                spinner1.setAdapter( adapter1);
                                spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {
                             
                                        }
                                       
                                        public void onNothingSelected(AdapterView<?> arg0) {}});
                     

EDIT: ho scoperto che non si può creare un arrayadapter dentro l'asynctask  >:( ......perchè?
« Ultima modifica: 09 Giugno 2013, 16:18:17 CEST da leo87, Reason: Merged DoublePost »