0

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

4

1 回答 1

1

使用 OnItemSelectedListener。我假设你有两个 Spinner。它会是这样的。

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。上面的代码没有经过测试,只是为了展示一个想法。

于 2013-02-01T09:53:15.523 回答