After playing with it a little bit I discovered more interesting
thing.

Frankly speaking, I used my extension of the ListView, shortly

public class MyListView
{
    ...
    public void setSelection(long theID)
    {
        ListAdapter adapter = getAdapter();

        if (adapter == null) {
            return;
        }

        for (int i = 0; i < adapter.getCount(); i++) {
            if (adapter.getItemId(i) == theID) {
                setSelection(i);
                break;
            }
        }
    }
}

or smth like that. The problem is that after calling setSelection(int)
the selection was not changed when the list in the touch mode. I know
that setSelection should be called via post(Runnable) method, so all
setSelection(long) (me method) calls were performed via post().
Besides, in the other cases (non-touch mode, onSave/
RestoreInstanceState) this setSelection(long) worked just perfectly.

I decided to change method setSelection(long theID) like this

public void setSelection(long theID)
{
    ListAdapter adapter = getAdapter();

    if (adapter == null) {
        return;
    }

    for (int i = 0; i < adapter.getCount(); i++) {
       if (adapter.getItemId(i) == theID) {
            final int position = i;
            post(new Runnable() {
                public void run()
                {
                    setSelection(position);
                }
            });
            break;
       }
   }
}

I don't know why (do I need to call post(Runnable) from another
postRunnable()?), but it seems it helped... and... it broke onSave/
RestoreInstanceState :( On the second screen rotation selected item in
the list is not restored (1 item becomes selected), when I return back
to simpler solution, onSave/Restore works fine but selection after
returning from the form doesn't work.

The only my hope is that Romain Guy can see message and explain what's
going on here.

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to