I know this is an old one, so this answer is just for reference.
To auto-select a given screen, all you have to do is setPreferenceScreen()
(this is for a pre-Honeycomb non-Fragment PreferenceActivity).
Once you're on the correct PreferenceScreen, you can indeed use getListView().smoothScrollToPosition(position)
(but this is a Froyo+ method), or you can use getListView.setSelection(position)
.
But how to get the position?
First, watch out for the trap: PreferenceActivity.getListAdapter()
does not return the actual ListAdapter, but a local instance variable which is disconcertingly not in sync with PreferenceActivity.getListView().getAdapter()
(and usually null).
Second, trying to use Preference.getOrder()
returns the order of the Preference object within its parent, which is what you want to use for the position only if you're not using PreferenceCategories
since what you need is its order within the PreferenceScreen.
If you are using PreferenceCategories, you need to iterate over the items in the adapter (for (int i = 0; i < adapter.getCount(); i++)
until you find the right one, and use its position.
Another corner of the Android SDK that is in dire need of some attention…
.
stackoverflow.comm
No comments:
Post a Comment