android - 如何正确地动态更新 Spinner?

标签 android dynamic android-spinner

我有一个带有自定义适配器的微调器,显示来自数据库的对象。 当对象列表更改时,我使用列表创建一个新适配器并将其应用于微调器。之后选择了第一项,所以我尝试了这个:

// 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/

相关文章:

java - Android Jelly Bean 不支持 PullToRefreshListView

javascript在点击时启用禁用复选框并一次只选择一个

c - 函数内的动态结构数组分配

jQuery createElement ("script")问题

android - 微调器项目未显示为下拉列表但位于微调器顶部

android - 在 android 中更改 Spinner 的外观

java - 关于try-catch的问题

java - 使用 onkeydown 方法或覆盖 onbackbuttonpressed 时,Android 后退按钮会卡住

java - 检索当前用户的 child 数据: Firebase

java - 自定义菜单或操作栏中的微调器