我是一个简单的问题。我创建了两个微调器,在第一个微调器中我想选择一个类别,在第二个微调器中我想选择该组的一个元素。我现在有一个好结果,但问题很小。 如果我选择第二个微调器的项目,例如在索引4上,如果我更改第一个微调器的元素,则第二个微调器转到第四个索引上的元素(如果第四个不存在则转到最后一个)。
如果我使用spinner2.setSelection(0),我就无法更改第二个微调器的值。
有什么想法吗?
提前致谢。
答案 0 :(得分:0)
试试这个,
public class MainActivity extends Activity {
private ArrayList<String> categoryList;
private ArrayList<String> elementList;
private Spinner categorySpinner,elementSpinner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// add categoryList and element to list
categoryList = new ArrayList<>();
elementList = new ArrayList<>();
categoryList.add("Category 1");
categoryList.add("Category 2");
categoryList.add("Category 3");
categoryList.add("Category 4");
categoryList.add("Category 5");
categoryList.add("Category 6");
elementList.add("element 1");
elementList.add("element 2");
elementList.add("element 3");
elementList.add("element 4");
categorySpinner = (Spinner) findViewById(R.id.spinner);
elementSpinner = (Spinner) findViewById(R.id.spinner2);
// create adapter for category and elementList
ArrayAdapter<String> categoryAdapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1, categoryList);
ArrayAdapter<String> elementAdapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1, elementList);
categorySpinner.setAdapter(categoryAdapter);
elementSpinner.setAdapter(elementAdapter);
// when user select any category
categorySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int categoryIndex, long l) {
if (categoryIndex >= elementList.size())
elementSpinner.setSelection(elementList.size() - 1);
else
elementSpinner.setSelection(categoryIndex);
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
}
}