Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 微调器显示值(选择)在适配器更新后更改(notifyDataSetChanged)_Android_Android Layout_Android Spinner - Fatal编程技术网

Android 微调器显示值(选择)在适配器更新后更改(notifyDataSetChanged)

Android 微调器显示值(选择)在适配器更新后更改(notifyDataSetChanged),android,android-layout,android-spinner,Android,Android Layout,Android Spinner,我有一个纺纱机。选择一个项目并通过notifyDataSetChanged更新适配器后,微调器(Textview)中显示的选定项目将更改。此功能是通过设计实现的。因为所选位置保持不变,但由于更新适配器的新内容,所选位置的值发生了更改 我想在适配器更新后继续显示最初选择的项目 我希望这个解决方案能起作用,但事件/列表器从未启动。可能是因为我正在使用微调器,而列表没有显示 更新 帮助回答至少两个问题: 在为AdWater调用notifyDataSetChanged后,如何确定微调器何时完成视图更新

我有一个纺纱机。选择一个项目并通过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();
    }