2011-04-08 57 views
1

我必須開發基於spinner的應用程序。如何基於spinner1選擇更新spinner2

所以我採取了spinner1作爲產品的選擇,我必須給spinner2的數據。這是在特定的產品類別,所以我必須更新spinner1的基礎選擇spinner2。

我有很多搜索,但我可以得到任何確定的示例代碼或資源。所以請幫助我這樣做。

+2

這裏有很多類似的問題:http://stackoverflow.com/questions/4492003/dynamic-update-of-spinner2-based-on-choice-in-spinner-1 http://stackoverflow.com/questions/5453580/android-dynamic-spinner-update – ernazm 2011-04-08 08:58:18

回答

1

我同意@ user639183,也有類似的問題很多的......不過,你是怎麼做到的一些解釋:

  1. 創建包含您選項來顯示數組成員變量。
  2. 用你的類別值填充你的第一個微調。
  3. 通過使用spinner1.setOnItemSelectedListener(...)
  4. 在事件監聽器中,使用相應的值填充第二個Spinner。

舉例步驟1:

spinner1的
private String[] spinner1values = new String[] { "cat1", "cat2" }; 
private String[][] spinner2values = new String[][] { 
     new String[] { "a1", "b1", "c1" }, 
     new String[] { "a2", "b2" } 
}; 

人口如下:

Spinner spinner1 = (Spinner) findViewById(R.id.spinner1); 
    ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this, 
      android.R.layout.simple_spinner_item, spinner1values); 
    adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spinner1.setAdapter(adapter1); 

這至今是絕對簡單的,如果你讀了紗廠文檔和例子!

接下來,鉤在OnItemSelectedListener

spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> arg0, View arg1, 
       int position, long arg3) { 
      // create a new adapter with the corresponding values 
      ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(arg0.getContext(), 
        android.R.layout.simple_spinner_item, spinner2values[position]); 
      adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
      // set adapter 
      ((Spinner)findViewById(R.id.spinner2)).setAdapter(adapter2); 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> arg0) { 
      // nothing selected, so set empty options 
      ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(arg0.getContext(), 
        android.R.layout.simple_spinner_item, new String[0]); 
      adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
      ((Spinner)findViewById(R.id.spinner2)).setAdapter(adapter2); 
     } 
    }); 

注意的是,該陣列中spinner2values順序與類別對應值的順序!

+0

感謝您的回覆。我已經明白了。 – 2011-04-08 09:24:45

+0

@Hrushikesh如果可行,請將此帖標記爲答案,謝謝。 – 2011-04-08 09:37:04

相關問題