Q:

How can I briefly highlight a row in a ListActivity?

I display a list of events in my derived ListActivity which uses a custom ListAdapter. I have a "Today" button which I want to take me to the closest event to today - easy enough - I just need to call setSelection(n).
But then I want to briefly highlight or flash or somehow draw the attention of the user to that item - just long enough so that they can see the item that is closest to today
The reason is, if there are, say, 10 items visible on screen at any one time out of a list of, say, 100 items, it's not immediately clear whether you've jumped to the item at the top of the visible 10, the item at the bottom of the visible 10, or one roughly in the middle of the screen (which for my app I'd actually prefer the selected item to be highlighted in the middle of the screen - but that's another task).  Even if the rule is something like "it's always the top item", that breaks down when I jump to item 100 because now the item at the top of the screen is item 91.  So there's the motivation.
I've been googling all morning. Here are some of the things I've tried.
During onCreate(...):
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
getListView().setSelector(android.R.color.darker_gray);

That works fine if I touch an item in the list, but if I use my "Today" button (which calls setSelection(n), the list scrolls immediately to the item, but doesn't highlight the item in gray.
private void FocusToday()
{
    int today = getItemClosestToToday();
    this.setSelection(today);
    getListView().getSelectedView().setBackgroundColor(Color.RED);

getListView() is returning null.
public void onCreate(Bundle savedInstanceState)
{
    ...
    m_ListView = this.getListView();
}

private void FocusToday()
{
    int today = getItemClosestToToday();
    this.setSelection(today);
    View view = m_ListView.getSelectedView();
    view.setBackgroundColor(Color.RED);

view is null.
Aside:
I've been trying to think where I've seen this behaviour before, racking my brains - was it an android app? An iphone app? A web app? Then it hit me - it's here on stack overflow! When you click on a link to an answer, the answer highlights in orange for about half a second before the orange fades away! That's the behaviour I'm looking for in my app!
Edit: if the item is on screen to begin with, the following works, but that's no use if the item is off screen to begin with.
View view = m_ListView.getChildAt(today);
view.setBackgroundColor(Color.RED);

View is null if today goes over the number of visible items.  I thought I was on to something when I found getFirstVisiblePosition().  Unfortunately, in this case:
this.setSelection(today);
int firstVisible = m_ListView.getFirstVisiblePosition();

firstVisible is always 0, whether today is a number within the range or the visible items, or outside of that range.  Adding notifyDataSetChanged makes no difference:
this.setSelection(today);
getListAdapter().notifyDataSetChanged();
int firstVisible = m_ListView.getFirstVisiblePosition();

firstVisible is still 0.

A:

You should have 2 ways of dealing with the highlight.
If the item is on screen, go ahead and use what you have that works. ie.find the view and operate on it immediately.
If however it is not on screen, initiate the highlight in your bindview()/getView from your adapter.
So to rephrase, if you can't find the view, set a flag with the id to be highlighted. In your getView, highlight the cell that has that ID and clear the flag.

