2013-02-01 43 views
0

我正在构建出租车预订应用程序。这个程序需要为出租车司机提供一个功能来指定他将从哪个城市运营。为了增强体验,我需要提供Select State下拉菜单,然后提供Select City下拉菜单。2下拉菜单状态和城市,根据所选状态设置城市字符串排列

这样的状态列在一个字符串数组中。

<string-array name="stateArray"> 
    <item>Andaman and Nicobar Islands</item> 
    <item>Andhra Pradesh</item> 
    <item>Arunachal Pradesh</item> 
    <item>Assam</item> 
</string-array> 

这个城市被列在像这样的字符串数组中。

<string-array name="AndhraPradesh"> 
    <item>Adilabad</item> 
    <item>Adoni</item> 
    <item>Amadalavalasa</item> 
    <item>Amalapuram</item> 
</string-array> 

在听众我

设置状态是在布局XML文件android:entries="@array/stateArray"真的很容易。

我见过很多其他的stackoverflow问题,推荐ArrayList和setAdapter。我想知道是否有一个相对简单的方法来设置城市的条目,以编程方式取决于所选择的状态。

回答

1

使用OnItemSelectedListener。 我假设你有两个Spinners。这将是这样的。

spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
    @Override 
    onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
     YourAdapter adapter = (YourAdapter) spinner2.getAdapter(); 

     switch (position) { 
      case COUNTRY_ONE: 
       adapter.setData(resources.getArray(R.array.cities_you_need_1)); 
       break; 

      case COUNTRY_TWO: 
       adapter.setData(resources.getArray(R.array.cities_you_need_2)); 
       break; 
     } 
    } 

    @Override 
    onNothingSelected(AdapterView<?> parent) { 
     ((YourAdapter) spinner2.getAdapter()).clear(); 
    } 
}); 

请注意,方法clear()和setData()是自定义帮助器方法。 SpinnerAdapter中没有这种方法。 或者你可以实现对象并比较id,而不是索引。上面的代码没有经过测试,只是为了展示一个想法。