就像这个one一样,我在这个网站上看到了一些操作方法,但说实话,我并不是真的得到它。
我希望一个微调器的内容基于先前的微调器选择,就像在States和Cities场景中一样。一般而言,工作流程是什么?第二个微调器的结果是基于第一个微调器过滤的,还是第二个微调器指向基于第一个微调器的完全不同的列表?
对于我自己的简单学习项目,我在strings.xml(AL-Cities,AK-Cities,AR-Cities等)中构建了几个字符串数组。我希望城市微调器能够根据状态微调器的选择从正确的阵列中填充。但我想知道是否应该只有一个大型多维数组“城市”,其中有一个州名缩写作为附加标识符,然后使用状态缩写作为过滤器指向第二个微调器。看起来前者会提供更好的表现。
非常感谢任何帮助(和代码示例)。我不是编程的新手(主要是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);
}
}
答案 0 :(得分:1)
您可以尝试从第一个微调器获取位置,即您选择的位置,然后在根据该位置检索正确的阵列后填充第二个微调器。
您必须侦听您的第一个适配器被更改:
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.
}
}