2010-03-08 85 views
9

我對android非常陌生。我想在我的應用程序中使用2個spinners,其中一個顯示國家列表,當選擇任何國家時,另一個Spinner應該顯示該國的城市列表。當選擇城市時,會執行一些操作。 PLZ幫助我一些示例代碼。感謝在期待如何使用微調器

+1

檢查[此](http://stackoverflow.com/questions/1337424/android-spinner-get-the-selected-item-change-event)博客,它會讓你知道一些不錯的東西。 我也在研究相同的概念,當我得到一個完整的解決方案時,我會在這裏提供答案。問候,Haps。 – Harpreet 2012-02-27 11:12:10

回答

9

下面是什麼東西,我們可以使用添加選項spinner2 WRT,以微調器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; 
     }  
    } 
} 

如果您找到這個有用的,然後把它放棄投票,以便其他人可以輕鬆地找到一個很好的答案。

對於每個國家,您必須爲其創建一個班級,只需添加州,城市&區域。這樣它就不會成爲單個頁面上的網格。

玩得開心。

Regards,

Haps。

3

下面是當微調項目被選中

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


} 

要值列表添加到微調描繪微調和執行動作的使用示例代碼,那麼你需要在活動指定SpinnerAdapter ,它擴展了Adapter類。一個微調適配器允許定義兩個不同的視圖:一個顯示微調器本身的數據,一個顯示按下微調器時下拉列表中的數據。您也可以下載&參考完整的spinner_demo示例項目可以更好地理解。