Android ListView获得新适配器后强制对话框无效

Android ListView获得新适配器后强制对话框无效,android,dialog,adapter,invalidation,Android,Dialog,Adapter,Invalidation,我在对话框中有一个列表视图。。。我有自己的数据适配器,但在创建/更改适配器的对话框中也有一个微调器 现在,在微调器选择更改时,将创建适配器,并将ListView的适配器设置为新适配器 这一切都很好,但我的对话框并没有在适配器更改后使其布局无效,它总是落后一步。。。这意味着,对话框始终具有在微调器选择之前应有的大小 编辑: 我只在微调器的选定事件中执行以下操作 public void onItemSelected(AdapterView<?> adapterView, View vie

我在对话框中有一个列表视图。。。我有自己的数据适配器,但在创建/更改适配器的对话框中也有一个微调器

现在,在微调器选择更改时,将创建适配器,并将ListView的适配器设置为新适配器

这一切都很好,但我的对话框并没有在适配器更改后使其布局无效,它总是落后一步。。。这意味着,对话框始终具有在微调器选择之前应有的大小

编辑: 我只在微调器的选定事件中执行以下操作

public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) 
{ 
    if (adapterView.getId() == R.id.spMG) 
    {
        long mg_id = ((MG)sp.getSelectedItem()).getID();
        adapter.clear();
        adapter.addAll(DBDataManager.getExercises(mg_id, true));

        adapter.notifyDataSetChanged();
        ((View)lv).invalidate();
    }
}
public void已选中(AdapterView AdapterView、视图视图、内部位置、长id)
{ 
if(adapterView.getId()==R.id.spMG)
{
长mg_id=((mg)sp.getSelectedItem()).getID();
适配器。清除();
addAll(DBDataManager.getExercises(mg_id,true));
adapter.notifyDataSetChanged();
((视图)lv.invalidate();
}
}

我使用的是ArrayAdapter,我只是向适配器添加了一个ArrayList。

您是否正在运行
notifyDataSetChanged()
?现在,我没有使用它。。。无论如何,我正在调用
listview.setAdapter(…)
,但我已经尝试调用
notifyDataSetChanged()
,但没有任何帮助…之后是否在
listview
上运行
invalidate()
?是的,也尝试过了。。。现在还没有成功…您正在使用哪种类型的
适配器?