我有一个带有自定义适配器的微调器,显示来自数据库的对象。 当对象列表更改时,我使用列表创建一个新适配器并将其应用于微调器。之后选择了第一项,所以我尝试了这个:
// 5th item selected
int pos = spinner.getSelectedItemPosition();
spinner.setAdapter(newAdapter);
// 0th item selected
spinner.setSelectedItem(pos);
// 5th item is selected
但是 GUI 仍然显示第一项?
spinner.invalidate()
没有帮助。
这是实现我想要的目标的正确方法吗?我真的找不到关于此行为的任何信息。
最佳答案
已解决:我想主要问题是自定义微调器适配器。这现在工作正常
if (spinner.getCount() > 0) {
pos = spinner.getSelectedItemPosition();
}
MySpinnerAdapter adapter = new MySpinnerAdapter(context, myNewObjects);
spinner.setAdapter(adapter);
spinner.setSelection(pos); // needed
adapter.notifyDataSetChanged();
关于android - 如何正确地动态更新 Spinner?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9443370/