Android 微调器显示值(选择)在适配器更新后更改(notifyDataSetChanged)
我有一个纺纱机。选择一个项目并通过notifyDataSetChanged更新适配器后,微调器(Textview)中显示的选定项目将更改。此功能是通过设计实现的。因为所选位置保持不变,但由于更新适配器的新内容,所选位置的值发生了更改 我想在适配器更新后继续显示最初选择的项目 我希望这个解决方案能起作用,但事件/列表器从未启动。可能是因为我正在使用微调器,而列表没有显示 更新 帮助回答至少两个问题:Android 微调器显示值(选择)在适配器更新后更改(notifyDataSetChanged),android,android-layout,android-spinner,Android,Android Layout,Android Spinner,我有一个纺纱机。选择一个项目并通过notifyDataSetChanged更新适配器后,微调器(Textview)中显示的选定项目将更改。此功能是通过设计实现的。因为所选位置保持不变,但由于更新适配器的新内容,所选位置的值发生了更改 我想在适配器更新后继续显示最初选择的项目 我希望这个解决方案能起作用,但事件/列表器从未启动。可能是因为我正在使用微调器,而列表没有显示 更新 帮助回答至少两个问题: 在为AdWater调用notifyDataSetChanged后,如何确定微调器何时完成视图更新
如果要维护当前选定的项,而不是当前选定的位置,则必须实现适配器的
getItemId(int position)
回调,以便:
- 微调器中的每个项目都有一个唯一的id
- 同一项目始终具有相同的id
getItemId()
的常见实现只是返回零,或者可能是项的位置
。在这种情况下,这两种方法都不起作用。理想情况下,您将拥有一个可以返回的实际逻辑ID,但如果您唯一拥有的是字符串
,则可以使用该字符串的hashCode()
方法:
@Override
public String getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return list.get(position).hashCode();
}
两个不同的字符串不太可能具有相同的哈希代码,但这并非不可能
@Override
public String getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return list.get(position).hashCode();
}