2013-02-01 93 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,而不是索引。上面的代碼沒有經過測試,只是爲了展示一個想法。