I figured out that I have to call the callback if I want the spinner to go away.  Here's the version of this code that I ended up with. Note that I add an else so TilesView doesn't get initialized.  This makes pick even faster. (But maybe breaks something else?)

    if (ModeManager.currentMode === MODE_LIST ||
        ModeManager.currentMode === MODE_PICKER)
    {
      ListView.clean();
      listHandle =
        musicdb.enumerate('metadata.' + TabBar.option, null, 'nextunique',
                          function(song) {
                            ListView.update(TabBar.option, song);
                          });

      if (callback)
        callback();
    }
    else {