2012-10-14 51 views
0
Spinner spinner, spinner2; 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_check_box_tuts); 

     spinner = (Spinner)findViewById(R.id.spinner1); 
     spinner2 = (Spinner)findViewById(R.id.spinner2); 
     spinner.setOnItemSelectedListener(this); 

    } 
    @Override 
    public void onItemSelected(AdapterView<?> v, View arg1, int arg2, 
      long arg3) { 
     switch(v.getId()){ 
     case R.id.spinner1: 
      if(spinner.getSelectedItemPosition() == 1){ 
       //what goes here?? 
      break; 
     } 
     } 
    } 

就像我的第一微调名单的国家:美国,日本等。所以美国已经选择了例如后,我的第二微调就能够得到美国的状态数组列表。更新微调阵列依赖于其他的选择

我用我的新手逻辑来试图这样想:设置第二个微调为View.GONE,然后如果让我们说美国被选中,则显示它独自承载状态的微调器2 ..但是如果我有60国家,那么我必须有60微调,这很有趣,所以帮我:D

回答

0

而不是创建一个Spinner为每个国家实例,保持相同Spinner ,并且当从第一个SpinnerArrayAdapter.createFromResource()Spinner.setAdapter()中选择一个值时,替换存储在其中的数据。 Here是使用这两个调用的示例。

在选择第一个选项之前,不要隐藏第二个Spinner,可以考虑在第一个Spinner中选择一个默认选项,然后用匹配的数据填充第二个选项。在你的例子中,美国将是一个很好的默认选择。

+0

'公共无效onItemSelected(适配器视图 V,查看ARG1,INT ARG2, \t \t \t长ARG3){ \t \t \t INT \t POS = country.getSelectedItemPosition(); \t \t switch(pos){ \t \t \t case 0:stateSpinner.setEnabled(false); \t \t \t break; \t \t \t \t \t \t壳体1: \t \t \t \t ArrayAdapter <的CharSequence>适配器= ArrayAdapter.createFromResource(此, \t \t \t R.array.US_state_array,android.R.layout.simple_spinner_item); \t \t \t adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); \t \t \t stateSpinner.setAdapter(adapter); \t \t \t break;' 第二个数组更新但无法选择。为什么? –