             // TODO: should resetting the dataProvider clear out all of its state?
             // or should we preserve selectedIndex
             if (selectedIndex >= 0 && dataProvider && selectedIndex < dataProvider.length)
-               itemSelected(dataProvider.getItemAt(selectedIndex), true);
+               itemSelected(selectedIndex, true);
             else
                selectedIndex = -1;
         }

    /**
     *  Specifies whether an item must always be selected.
     *  If the value is <code>true</code>, the <code>selectedIndex</code> property 
     *  is always set to a value between 0 and (<code>numItems</code> - 1), 
     *  or -1 if there are no items.
     *
     *  @default false

     *  Called when an item is selected or deselected. 
     *  Subclasses must override this method to display the selection.
     *
     *  @param index The item index that was selected.
     *
     *  @param selected <code>true</code> if the item is selected, 
     *  and <code>false</code> if it is deselected.
     */
    protected function itemSelected(index:int, selected:Boolean):void
    {
        // Subclasses must override this method to display the selection.
    }
    
    /**
     *  Returns true if the item is selected by calling 
     *  <code>isItemIndexSelected()</code>.
     * 
     *  <p>If multiple instances of the item are in the list, 
     *  this will only check to see whether the item at  
     *  <code>dataProvider.getItemIndex()</code> (usually the first 
     *  instance of that item) is selected.</p>
     * 
     *  @param item The item whose selection status is being checked
     *
     *  @return true if the item is selected, false otherwise.
     */
    public function isItemSelected(item:Object):Boolean
    {
        var index:int = dataProvider.getItemIndex(item);
        
        return isItemIndexSelected(index);
    }
        
    /**
     *  Returns true if the item at the index is selected.
     * 
     *  @param index The index of the item whose selection status is being checked
     *
     *  @return true if the item at that index is selected, false otherwise.
     */
    public function isItemIndexSelected(index:int):Boolean
    {        
        return index == selectedIndex;
    }
    
    //--------------------------------------------------------------------------
