2下拉状态和城市,根据所选状态设置城市字符串数组

时间:2013-02-01 09:42:42

标签: android list drop-down-menu

我正在建立一个出租车预订应用程序。此应用程序需要为出租车司机提供一项功能,以指定他将从哪个城市进行操作。为了增强体验,我需要提供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问题。我想知道是否有一种相对简单的方法来设置城市的条目,以编程方式取决于所选的州。

1 个答案:

答案 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而不是索引。上面的代码没有经过测试,只是为了表明一个想法。