在第二种方法下,第二个微调器的值没有改变

时间:2019-04-11 14:22:35

标签: android android-spinner onitemselectedlistener

我在部门和课程中使用了两个微调器,在其中设置各个部门的课程。 当我再次尝试选择部门时,它会在第二个微调器中显示相应的课程,但不会更改第二个微调器的显示值。

我尝试清除字符串数组作为第二个选项,但仍然无法正常工作。

ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, depts);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
DeptSpin.setAdapter(adapter);
DeptSpin.setOnItemSelectedListener(this);
ArrayAdapter<String> adapter1 = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, courses);
adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
courseSpin.setAdapter(adapter1);
courseSpin.setOnItemSelectedListener(this);

public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    courses.clear();
    courses.add("Select Course");
    Cursor cursor = HostelDB.getCourse(position - 1);
    if (cursor.getCount() == 0) {
        Toast.makeText(this, "Data not found", Toast.LENGTH_SHORT).show();
    } else {
        cursor.moveToFirst();
        do {
            courses.add(cursor.getString(cursor.getColumnIndex("Name")));
        } while (cursor.moveToNext());
    }
    cursor.close();
}

1 个答案:

答案 0 :(得分:0)

添加所有项目后,您需要致电notifyDataSetChanged()

courses.clear();
courses.add("Select Course");

...
// refresh the adapter
adapter1.notifyDataSetChanged();