根据条件对Spinner中的值进行排序

时间:2016-07-12 02:39:42

标签: android arrays sorting android-spinner

我想制作两个微调器,第一个微调器有状态列表,第二个微调器包含城市列表。如果我从第一个微调器中选择特定状态,则下一个微调器必须仅显示所选状态的城市。

我的安卓代码

<resources>
    <declare-styleable name="AvatarImageBehavior">
        <attr name="finalYPosition" format="dimension"/>
        <attr name="startXPosition" format="dimension"/>
        <attr name="startToolbarPosition" format="dimension"/>
        <attr name="startHeight" format="dimension"/>
        <attr name="finalHeight" format="dimension"/>
    </declare-styleable>
</resources>

我为州和城市创造了所有我的。

2 个答案:

答案 0 :(得分:1)

有很多方法可以实现这一目标,例如:

ArrayAdapter<CharSequence> stateadapter;
switch(state)
{
    case "Florida": 
       {
           stateadapter = ArrayAdapter.createFromResource(this, R.array.cities_florida, android.R.layout.simple_spinner_item);
       } break;
}

(有点硬编码)

最优化的解决方案是在xml文件上定义它(也许你可以在互联网上找到它)并写一个读取文件的类并返回所选状态下的所有城市。

读: https://developer.android.com/training/basics/network-ops/xml.html

答案 1 :(得分:0)

将侦听器添加到Spinner状态

state.setOnItemSelectedListener(this);

实施监听器:

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    String selectedState = state.getSelectedItem().toString();

   List<String> citiesInState = new ArrayList<>();
   // add all cities in selectedState to this list using citiesInState.add();
   // this will depend upon how you are storing the cities and states

   ArrayAdapter<String> cityDataAdapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_spinner_item, citiesInState);
   cityDataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

   city.setAdapter(cityDataAdapter);

}