我正在建立一个出租车预订应用程序。此应用程序需要为出租车司机提供一项功能,以指定他将从哪个城市进行操作。为了增强体验,我需要提供Select State
下拉菜单,然后提供Select City
下拉列表。
状态列在这样的字符串数组中。
<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"
中设置状态非常简单。
我已经看到许多推荐ArrayList和setAdapter的stackoverflow问题。我想知道是否有一种相对简单的方法来设置城市的条目,以编程方式取决于所选的州。
答案 0 :(得分: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而不是索引。上面的代码没有经过测试,只是为了表明一个想法。