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

Posted

技术标签:

【中文标题】在第二种方法中,第二个微调器值没有改变【英文标题】:At second approach, second spinner value is not changing 【发布时间】:2019-09-02 05:25:44 【问题描述】:

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

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

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】:

添加所有项目后,您需要调用notifyDataSetChanged():

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

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

【讨论】:

以上是关于在第二种方法中,第二个微调器值没有改变的主要内容,如果未能解决你的问题,请参考以下文章

在反应类组件中,为啥在按钮单击的第一个实例中状态没有改变?但在第二种情况下,它会更新吗?

第二个Dropdownlist无法选择其他选项

尝试在第二种方法java中使用第一种方法的结果

如何从线程更新 UI?

第二次测试不改变 URL

Java:如何从第二种方法获取变量以在第三种方法中工作?