Это тоже не элегантное решение. На самом деле это скорее Рубе-Гольдберг, но, похоже, работает. Я уверен, что спиннер использовался хотя бы один раз, расширяя адаптер массива и переопределяя его getDropDownView. В новом методе getDropDownView у меня есть логический флаг, который показывает, что выпадающее меню использовалось хотя бы один раз. Я игнорирую вызовы слушателя, пока не установлен флаг.
MainActivity.onCreate ():
ActionBar ab = getActionBar();
ab.setDisplayShowTitleEnabled(false);
ab.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
ab.setListNavigationCallbacks(null, null);
ArrayList<String> abList = new ArrayList<String>();
abList.add("line 1");
...
ArAd abAdapt = new ArAd (this
, android.R.layout.simple_list_item_1
, android.R.id.text1, abList);
ab.setListNavigationCallbacks(abAdapt, MainActivity.this);
адаптер переопределенного массива:
private static boolean viewed = false;
private class ArAd extends ArrayAdapter<String> {
private ArAd(Activity a
, int layoutId, int resId, ArrayList<String> list) {
super(a, layoutId, resId, list);
viewed = false;
}
@Override
public View getDropDownView(int position, View convertView,
ViewGroup parent) {
viewed = true;
return super.getDropDownView(position, convertView, parent);
}
}
модифицированный слушатель:
@Override
public boolean onNavigationItemSelected(
int itemPosition, long itemId) {
if (viewed) {
...
}
return false;
}