У меня есть ActionBar со списком навигации. Как я вижу, ActionBar.OnNavigationListener вызывается только для вновь выбранных позиций. Есть ли способ иметь обратный вызов для каждого выбора, даже если я выбираю уже выбранный элемент?ActionBarSherlock и ActionBar.OnNavigationListener
ответ
У меня есть только хакерское решение, и я открыт для предложений, как улучшить его. Но это работает.
Хитрость заключается в том, чтобы иметь невидимый элемент, который выбирается после фактического выбора. Таким образом, onNavigationItemSelected
снова вызывается при повторном выборе выбранного элемента.
public class ReselectAdapter extends ArrayAdapter<String> {
private Context mContext;
private ArrayList<String> mItems;
private int mInternalPosition;
public ReselectAdapter(Context context, ArrayList<String> items) {
super(context, R.layout.sherlock_spinner_item, items);
mContext = context;
mItems = items;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView textView = (TextView) convertView;
if (textView == null) {
textView = (TextView) LayoutInflater.from(mContext).inflate(
R.layout.sherlock_spinner_item, null);
textView.setText(mItems.get(mInternalPosition));
}
return textView;
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup
parent) {
TextView textView = null;
if (position == mItems.size() - 1) {
textView = new TextView(mContext);
textView.setHeight(0);
} else {
textView = (TextView) LayoutInflater.from(mContext)
.inflate(R.layout.sherlock_spinner_dropdown_item,
parent, false);
textView.setText(mItems.get(position));
}
parent.setVerticalScrollBarEnabled(false);
return textView;
}
public void setInternalPosition(int internalPosition) {
mInternalPosition = internalPosition;
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
// [...]
ArrayList<String> items = new ArrayList<String>();
items.add("A");
items.add("B");
items.add("C");
items.add(""); // the last item is the invisible one
mReselectAdapter = new ReselectAdapter(context, items);
getSupportActionBar().setListNavigationCallbacks(mReselectAdapter, this);
}
@Override
public boolean onNavigationItemSelected(int itemPosition, long itemId) {
int navigationItemCount = getSupportActionBar().getNavigationItemCount();
if (itemPosition == navigationItemCount - 1) {
return true;
}
Log.i("onNavigationItemSelected", mReselectAdapter.getItem(itemPosition));
mReselectAdapter.setInternalPosition(itemPosition);
getSupportActionBar().setSelectedNavigationItem(navigationItemCount - 1);
return true;
}
спасибо за ответ, просто интересно, нашли ли вы лучший способ? – myanimal
Нет, это все равно, как я бы это реализовал в данный момент. –
- 1. ActionBar.OnNavigationListener осуждается
- 2. ActionBarSherlock и FragmentTabsPager
- 3. AdMob и ActionBarSherlock
- 4. ViewPagerIndicator и ActionBarSherlock
- 5. Robotium и ActionBarSherlock
- 6. SearchView и ActionbarSherlock
- 7. ActionBarSherlock И GoogleLicenseCheck
- 8. Фрагменты, ActionBarSherlock и меню
- 9. Caldroid, ActionBarSherlock и Maven
- 10. ActionBarSherlock и appcompat_v7
- 11. ActionbarSherlock и homeAsUpIndicator
- 12. Проблема с NotificationCompact.Builder и ActionBarSherlock
- 13. Как импортировать ViewPagerIndicator и ActionBarSherlock?
- 14. добавление ActionBarSherlock
- 15. Размер ActionBarSherlock?
- 16. Реализация ActionbarSherlock
- 17. ActionBarSherlock targetSdkVersion
- 18. ActionBarSherlock collapseActionView
- 19. ActionBarSherlock - Стиль содержит ключ с плохой записью
- 20. Android. ActionBarSherlock.
- 21. ActionBarSherlock onTouchListener()
- 22. ActionBarSherlock ShareActionProvider
- 23. Метод openFragmentTransaction() не определено для типа нового ActionBar.OnNavigationListener() {}
- 24. Как импортировать ActionBarSherlock в android SDK версии 23
- 25. Jar Несоответствие при использовании ActionBarSherlock и FacebookSdk
- 26. Android ActionBarSherlock и SlidingMenu, Ошибка фрагмента меню
- 27. ActionBarSherlock и pre 3.0 Android-устройства
- 28. Скрыть ActionBarSherlock название и показать только логотип
- 29. Использование ActionBarSherlock и ViewPagerIndicator с моим стилем
- 30. Проблема с Robolectric 2.2 и ActionBarSherlock 4.2.0
используется вкладка навигации в ActionBar ли? Если это так, используйте интерфейс 'TabListener' и метод' onTabReselected() '. – saschoar