我正在为 Android 制作一个应用程序。我有 2 个微调器,当我在第一个微调器(simpleSpinner
)中选择一项时,它需要显示它(我已经这样做了),但是当我选择一个时从我的第二个微调器(multiSpinner
)我希望我的simpleSpinner
返回到微调器中的第一个项目。相反,当我在 simpleSpinner
中选择一个时,我希望我的 multiSpinner
显示 simpleSpinner
中的第一项。我该怎么做?
final ArrayAdapter<String> ar1 = new ArrayAdapter<String>(this,
R.layout.my_spinner, arrSimple);
final ArrayAdapter<String> ar2 = new ArrayAdapter<String>(this,
R.layout.my_spinner, arrMulti);
spSimple.setAdapter(ar1);
spMulti.setAdapter(ar2);
AdapterView.OnItemSelectedListener simpleListen = new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
String simpleText = spSimple.getSelectedItem().toString();
if("Rouge".equals(simpleText)){
spMulti.setSelection(0);
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
};
AdapterView.OnItemSelectedListener multiListen = new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
String multiText = spMulti.getSelectedItem().toString();
if("Plein".equals(multiText)){
spSimple.setSelection(0);
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
};
spSimple.setOnItemSelectedListener(simpleListen);
spMulti.setOnItemSelectedListener(multiListen);
代码现在可以运行了!感谢@BlackPanther
最佳答案
您应该为您的Spinners
使用单独的监听器。由于您对两个 Spinner
这段代码使用相同的监听器
if("Rouge".equals(simpleText)){
spMulti.setSelection(0);
}
导致你的问题。
当您在第一个 Spinner
中首次选择“Rouge”时,第二个微调器将设置为“Wahie”,现在当您尝试更改第二个 Spinner
中的项目时>,调用相同的方法,并且由于第一个 Spinner
的选择位于“Rouge”中,因此第二个 Spinner
再次设置为“Wahie”..
在您的 onCreate
方法中执行类似的操作
@Override
public void onCreate(Bundle savedInstanceState) {
//your code
addListenerOnSpinnerItemSelection();
//more of your code
}
public void addListenerOnSpinnerItemSelection() {
spMulti = (Spinner) findViewById(R.id.spMulti);
spMulti.setOnItemSelectedListener(new CustomOnItemSelectedListener());
}
您可以创建一个实现OnItemSelectedListener
的自定义监听器类
参见this article 。您可以对其进行改编并根据您的需要进行定制。
您可以通过以下代码对两个微调器使用相同的监听器
Spinner spinner = (Spinner) parent;
if(spinner.getId() == R.id.spSimple)
{
//do this
}
else if(spinner.getId() == R.id.spMulti)
{
//do this
}
关于java - 根据其他微调器设置微调器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23558448/