2010-03-08 10 views
9

Ich bin sehr neu in Android. Ich möchte 2 Spinner in meiner Anwendung verwenden, eine zeigt die Länderliste. Wenn ein Land ausgewählt wird, sollte der andere Spinner die Liste der Städte dieses Landes anzeigen. Wenn Stadt ausgewählt ist, wird eine Aktion ausgeführt. Bitte helfen Sie mir mit einem Beispielcode. Dank im Vorauswie spinner zu verwenden

+1

Check [this] (http://stackoverflow.com/questions/1337424/android-spinner-get-the-selected-item-change-event) Blog, es wird Sie etwas Schönes wissen lassen. Ich arbeite auch an demselben Konzept, ich werde die Antwort hier geben, wenn ich eine komplette Lösung bekomme. Grüße, Haps. – Harpreet

Antwort

9

Hier ist etwas, was wir Optionen hinzufügen können WRT spinner2 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; 
     }  
    } 
} 

Wenn Sie spinner Finde das nützlich, dann gib es auf, damit andere leicht eine gute Antwort finden können.

Für jedes Land müssen Sie eine Klasse erstellen, um einfach den Status, Stadt & Bereich hinzuzufügen. Damit es nicht zu einem Netz auf einer einzelnen Seite wird.

Viel Spaß.

Grüße,

Haps.

3

Hier ist ein Beispielcode, der die Verwendung von Spinner und auszuführende Aktion zeigt, wenn Spinner Artikel

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); 
    } 


} 

ausgewählt ist, eine Liste von Werten zu dem Spinner hinzuzufügen Sie dann eine SpinnerAdapter in Ihrer Aktivität angeben müssen Dies erweitert Adapter-Klasse. Ein Spinner-Adapter ermöglicht zwei verschiedene Ansichten zu definieren: eine, die die Daten im Spinner selbst zeigt und eine, die die Daten in der Dropdown-Liste zeigt, wenn der Spinner gedrückt wird. Sie können auch herunterladen & beziehen das komplette spinner_demo Beispielprojekt zum besseren Verständnis.

Verwandte Themen