2010-03-08 12 views
9

Sono molto nuovo ad Android. Voglio utilizzare 2 filatori nella mia applicazione, uno mostra la lista dei paesi, quando viene selezionato un paese l'altro spinner dovrebbe mostrare l'elenco delle città di quel paese. quando viene selezionata la città, viene eseguita un'azione. per favore aiutami con qualche codice di esempio. grazie in anticipocome usare lo spinner

+1

Controlla [questo] (http://stackoverflow.com/questions/1337424/android-spinner-get-the-selected-item-change-event) blog, ti farà sapere qualcosa di carino. Sto anche lavorando sullo stesso concetto, metterò la risposta qui, quando avrò una soluzione completa. Saluti, Haps. – Harpreet

risposta

9

Qui c'è qualcosa di quello che possiamo usare per aggiungere opzioni al spinner2 WRT a Spinner 1.

public class Activity extends Activity implements View.OnClickListener 
{ 
    private Spinner spinner0, spinner1, spinner2, spinner3; 
    private Button submit, cancel; 

    private String country[], state[], city[], area[]; 

    Australia aus = new Australia(); 

    Object object; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     spinner0 = (Spinner)findViewById(R.id.spinnerCountry); 
     spinner1 = (Spinner)findViewById(R.id.spinnerQ1); 
     spinner2 = (Spinner)findViewById(R.id.spinnerQ2); 
     spinner3 = (Spinner)findViewById(R.id.spinnerQ3); 

     submit = (Button)findViewById(R.id.btnSubmit); 
     cancel = (Button)findViewById(R.id.btnCancel); 

     submit.setOnClickListener(this); 
     cancel.setOnClickListener(this); 

     country = new String[] {"Select Country", "Australia", "USA", "UK", "New Zealand", "EU", "Europe", "China", "Hong Kong", 
           "India", "Malaysia", "Canada", "International", "Asia", "Africa"}; 


     ArrayAdapter<String> adapter0 = new ArrayAdapter<String>(Activity.this, android.R.layout.simple_spinner_item, country); 
     adapter0.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line); 
     spinner0.setAdapter(adapter0); 
     Log.i("AAA","spinner0"); 

     spinner0.setOnItemSelectedListener(new OnItemSelectedListener() 
     {   
      @Override 
      public void onItemSelected(AdapterView<?> arg0, View view1, int pos, long id) 
      { 
       Log.i("AAA","OnItemSelected"); 
       int loc; 
       loc = pos; 

       switch (loc) 
       { 
       case 1: 

        state = aus.getState(); 
        object = aus; 

        Log.i("AAA","ArrayAdapter1");     
        ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(Activity.this, android.R.layout.simple_spinner_item, state); 
        adapter1.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line); 
        spinner1.setAdapter(adapter1);   Log.i("AAA","spinner1"); 
        break; 

       default: 
        Log.i("AAA","default 0"); 
        break; 
       }        
      }  

      @Override 
      public void onNothingSelected(AdapterView<?> arg1) 
      { 
       Log.i("AAA","Nothing S0"); 

      } 
     }); 

     spinner1.setOnItemSelectedListener(new OnItemSelectedListener() 
     { 
      @Override 
      public void onItemSelected(AdapterView<?> arg0, View view1, int pos, long id) 
      { 
       Log.i("AAA","OnItemSelected S1"); 
       int loc = pos; 
       switch(loc) 
       { 
        case 1: 
         Log.i("AAA","Australia"); 
         if(object.equals(aus)) 
         { 
          city = aus.getType(loc); 
         } 
         else 
         { 
          break; 
         } 


         ArrayAdapter<String> adapter = new ArrayAdapter<String>(Activity.this, android.R.layout.simple_spinner_item, city); 
         adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line); 
         spinner2.setAdapter(adapter);   Log.i("AAA","spinner2"); 
         break; 

        default: 
          Log.i("AAA", "default 1"); 
         break; 

       } 
      } 
      @Override 
      public void onNothingSelected(AdapterView<?> arg0) 
      { 
       Log.i("AAA","Nothing S1");    
      } 

     }); 

     spinner2.setOnItemSelectedListener(new OnItemSelectedListener() 
     { 

     @Override 
     public void onItemSelected(AdapterView<?> arg0, View arg1, int pos, long id) 
     { 
      int loc = pos; 
      switch (loc) 
      { 
      case 1: 
       if(object.equals(aus)) 
       { 
        area = aus.getTitle(loc); 
       } 

       ArrayAdapter<String> adapter = new ArrayAdapter<String>(Activity.this, android.R.layout.simple_spinner_item, area); 
       adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line); 
       spinner3.setAdapter(adapter);   Log.i("","spinner3");    
       break; 

      default: 
       break; 
      } 

     } 

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

    }// on-create 


    @Override 
    public void onClick(View v) 
    { 
     switch (v.getId()) 
     { 
     case R.id.btnSubmit: 

      break; 

     case R.id.btnCancel: 
      finish(); 
      break; 

     default: 
      break; 
     }  
    } 
} 

Se trovare questo utile, quindi dargli il voto, in modo che gli altri possano trovare facilmente una buona risposta.

Per ogni Paese, è necessario creare una classe per esso, per aggiungere solo Stato, Città & Area. In modo che non diventi una mesh in una singola pagina singola.

Buon divertimento.

Cordiali saluti,

Haps.

3

Ecco un esempio di codice che descrive l'utilizzo di filatore e azione eseguita quando l'articolo filatore è selezionato

import android.os.Bundle; 
import android.app.Activity; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.Spinner; 
import android.widget.AdapterView.OnItemSelectedListener; 

public class MainActivity extends Activity { 

    Spinner spin; 
    String spin_val; 
    String[] gender = { "Male", "Female" };//array of strings used to populate the spinner 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main);//setting layout 
     spin = (Spinner) findViewById(R.id.spinner_id);//fetching view's id 
     //Register a callback to be invoked when an item in this AdapterView has been selected 
     spin.setOnItemSelectedListener(new OnItemSelectedListener() { 

      @Override 
      public void onItemSelected(AdapterView<?> arg0, View arg1, 
        int position, long id) { 
       // TODO Auto-generated method stub 
       spin_val = gender[position];//saving the value selected 


      } 

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

      } 

     }); 
     //setting array adaptors to spinners 
     //ArrayAdapter is a BaseAdapter that is backed by an array of arbitrary objects 
     ArrayAdapter<String> spin_adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_item, gender); 

     // setting adapteers to spinners 
     spin.setAdapter(spin_adapter); 
    } 


} 

Per aggiungere un elenco di valori alla trottola, è quindi necessario specificare uno SpinnerAdapter nella vostra attività , che estende la classe Adapter. Un adattatore spinner consente di definire due diverse viste: una che mostra i dati nella casella stessa e quella che mostra i dati nell'elenco a discesa quando si preme lo spinner. È anche possibile scaricare & fare riferimento a il progetto di esempio spinner_demo completo per una migliore comprensione.

Problemi correlati