像这样的一个,我已经看到了一些如何做的这个网站,但说实话,我真的不 得到它 。
我希望一个微调器的内容基于先前的微调器选择,例如在“州和城市”场景中。一般而言,什么是工作流程?是根据第一个微调框过滤第二个微调框的结果,还是第二个微调框指向基于第一个微调框的完全不同的列表?
对于我自己的简单学习项目,我在strings.xml中构建了几个字符串数组(AL-城市,AK-城市,AR- 城市等)。我希望城市微调器根据状态微调器的选择从正确的数组中填充。但是我想知道是否应该只使用一个大型多维数组“城市”,将状态缩写作为附加标识符,然后将第二个微调器指向使用状态缩写作为过滤器的那个。前者似乎可以提供更好的性能。
任何帮助(和代码示例)将不胜感激。我对编程并不陌生(大多数情况下是php,所以我想脚本编写更准确),但是对Java来说我是新手。到目前为止,我的代码与微调器未链接在一起,下面是第二个微调器指向未分化的city_array的代码。
谢谢!
public class Example1 extends Activity { /** Called when the activity is first created. */ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.example1); Spinner spinState = (Spinner) findViewById(R.id.spin_state); ArrayAdapter<CharSequence> adapter3 = ArrayAdapter.createFromResource( this, R.array.state_array, android.R.layout.simple_spinner_item); adapter3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinState.setAdapter(adapter3); Spinner spinCity = (Spinner) findViewById(R.id.spin_city); ArrayAdapter<CharSequence> adapter4 = ArrayAdapter.createFromResource( this, R.array.city_array, android.R.layout.simple_spinner_item); adapter4.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinCity.setAdapter(adapter4); } }
您可以尝试从您选择的第一个微调器中获取位置,然后在基于该位置检索适当的数组之后填充第二个微调器。
您必须聆听第一个适配器的更改:
spinner. setOnItemSelectedListener(new MyOnItemSelectedListener()); class MyOnItemSelectedListener implements OnItemSelectedListener { public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { String choice = parent.getItemAtPosition(pos).toString(); populateSecondSpinnerMethod(choice) } } public void onNothingSelected(AdapterView parent) { // Do nothing. } }