2010-03-08 17 views
9

Jestem bardzo nowy dla Androida. Chcę użyć dwóch spinnerów w mojej aplikacji, jedna pokazuje listę krajów, kiedy wybrany jest inny kraj, druga powinna pokazać listę miast tego kraju. po wybraniu miasta wykonywane są pewne czynności. plz pomóż mi z przykładowym kodem. Dzięki w oczekiwaniujak używać spinner

+1

Sprawdź blog [to] (http://stackoverflow.com/questions/1337424/android-spinner-get-selected-item-change-event), dzięki któremu dowiesz się czegoś miłego. Pracuję też nad tą samą koncepcją, tutaj przedstawię odpowiedź, gdy otrzymam kompletne rozwiązanie. Pozdrawiam, Haps. – Harpreet

Odpowiedz

9

Tutaj jest coś, co możemy wykorzystać, aby dodać opcje spinner2 wrt do 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; 
     }  
    } 
} 

Jeśli znaleźć to przydatne, a następnie oddać głos, aby inni mogli łatwo znaleźć dobrą odpowiedź.

Dla każdego kraju należy utworzyć dla niego klasę, aby po prostu dodać Stan, Miasto & Obszar. Tak, aby nie stała się siatką na pojedynczym miejscu na jednej stronie.

Baw się dobrze.

Pozdrawiam,

Haps.

3

Oto przykładowy kod, który przedstawia wykorzystanie turbinki i działania wykonywane, gdy pozycja pokrętła wybrano

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


} 

Aby dodać listę wartości do wirówki, następnie trzeba określić SpinnerAdapter w swojej działalności , która rozszerza kategorię adaptera. Adapter przejściówki pozwala na zdefiniowanie dwóch różnych widoków: jednego, który pokazuje dane w samym pokrętle, i który pokazuje dane z rozwijalnej listy po naciśnięciu spinnera. Możesz także pobrać & kompletny przykładowy projekt dla lepszego zrozumienia.