2012-08-03 146 views
0

我有一個關於微調器的問題,在網上找不到任何關於如何去做的問題。微調器選擇定義了另一個微調器的選擇

我在我的應用程序中有一個微調器,區域選擇即西南,東南。

我希望微調控制器選擇第二個微調控制器的可用選項,以取決於第一個微調控制器的選擇。即當用戶選擇西南時,第二個微調器上的選擇將是查爾斯湖,愛荷華州,亞瑟湖等。並且當用戶選擇東南時,第二微調器的選擇將是格雷特納,新奧爾良,盧林等。

我該如何去做呢?

示例將不勝感激!

謝謝!

回答

5

試試這個代碼..

我希望它會幫助你...

public class MainActivity extends Activity { 

Spinner sp1,sp2; 
ArrayAdapter<String> adp1,adp2; 
List<String> l1,l2; 
int pos; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    l1=new ArrayList<String>(); 

    l1.add("A"); 
    l1.add("B"); 

    sp1= (Spinner) findViewById(R.id.spinner1); 
    sp2= (Spinner) findViewById(R.id.spinner2); 

    adp1=new ArrayAdapter<String> (this,android.R.layout.simple_dropdown_item_1line,l1); 
    adp1.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line); 
    sp1.setAdapter(adp1); 

    sp1.setOnItemSelectedListener(new OnItemSelectedListener() { 

     @Override 
     public void onItemSelected(AdapterView<?> arg0, View arg1, 
       int arg2, long arg3) { 
      // TODO Auto-generated method stub 
      pos=arg2; 
      add(); 

     } 

     private void add() { 
      // TODO Auto-generated method stub 
      Toast.makeText(getBaseContext(), ""+pos, Toast.LENGTH_SHORT).show(); 

      switch(pos) 
      { 
      case 0: 
       l2= new ArrayList<String>();      
       l2.add("A 1"); 
       l2.add("A 2"); 

       adp2=new ArrayAdapter<String>(MainActivity.this, 
         android.R.layout.simple_dropdown_item_1line,l2); 
       adp2.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line); 
       sp2.setAdapter(adp2); 

       select(); 

       break; 
      case 1: 
       l2= new ArrayList<String>();      
       l2.add("B 1"); 
       l2.add("B 2"); 

       adp2=new ArrayAdapter<String>(MainActivity.this, 
         android.R.layout.simple_dropdown_item_1line,l2); 
       adp2.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line); 
       sp2.setAdapter(adp2); 

       select(); 

       break; 
      } 

     } 

     private void select() { 
      // TODO Auto-generated method stub 

      sp2.setOnItemSelectedListener(new OnItemSelectedListener() { 

       @Override 
       public void onItemSelected(AdapterView<?> arg0, View arg1, 
         int arg2, long arg3) { 
        // TODO Auto-generated method stub 
        Toast.makeText(getBaseContext(), "Test "+arg2, Toast.LENGTH_SHORT).show(); 

       } 

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

       } 
      }); 

     } 

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

     } 
    }); 
    } 

} 
+0

這就是它!謝謝!我只需要進行一些更改以匹配我的數據,添加另一個微調器,然後打開一個新的活動! – Madonk 2012-08-03 18:51:42

0

基本上你會接受第一次選手賽事。在此之後,您可以更改第二個微調控制器列表的內容。您可能還必須調用invalidateView()以使更改生效。所以實際上有三部分:1)在onClick處理程序中捕獲選擇。

2)修改第二個微調器的數據,並在過濾後將spinner2數據重置爲調整後的數據。

3)如果需要,使第二個微調失效,並可能在containsView上使invalidateView失效,所有事情都顯示出來。

所以把它分解到這三個步驟,讓我們知道你是否有任何疑問。

+0

我忘了提,我這怎麼新。這是我的第一個應用程序和唯一的經驗,我與任何一種編碼是基本的HTML笑lol – Madonk 2012-08-03 02:01:51

+0

其實,我想我找到了一些東西http://www.mkyong.com/android/android-spinner-drop-down-list-示例/ – Madonk 2012-08-03 02:08:50