我想制作两个微调器,第一个微调器有状态列表,第二个微调器包含城市列表。如果我从第一个微调器中选择特定状态,则下一个微调器必须仅显示所选状态的城市。
我的安卓代码
<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>
我为州和城市创造了所有我的。
答案 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);
}