Spinner Index Android

时间:2015-11-25 11:31:48

标签: android indexing spinner android-adapter

我是一个简单的问题。我创建了两个微调器,在第一个微调器中我想选择一个类别,在第二个微调器中我想选择该组的一个元素。我现在有一个好结果,但问题很小。 如果我选择第二个微调器的项目,例如在索引4上,如果我更改第一个微调器的元素,则第二个微调器转到第四个索引上的元素(如果第四个不存在则转到最后一个)。

如果我使用spinner2.setSelection(0),我就无法更改第二个微调器的值。

有什么想法吗?

提前致谢。

1 个答案:

答案 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) {

            }
        });

    }

}