MultiChoiceMode перед API 11
Я реализую ActionMode в своем Android-приложении с помощью ActionBarSherlock.
С ABS можно создать ActionMode до API 11, но с легкостью:
listView.setMultiChoiceModeListener( new MultiChoiceModeListener() ...
не для приложения до API 11.
У кого-нибудь хороший способ создать контекстное меню режима действия до API 11?
Я хочу сделать длинный щелчок по элементу списка и запустить ActionMode, в котором я могу щелкнуть несколько элементов. На простом клике я покажу подробный сайт элемента списка.
Я использую метод registerForContext()
, но это делает простой и длинный щелчок.
У кого-нибудь хороший совет для меня.
РЕДАКТИРОВАТЬ
Решение для моего вопроса следующее: В длинном элементе нажмите i, чтобы активировать режим действия и сохранить его в переменной. В методе щелчка элемента item я реализую инструкцию if-else с помощью:
if( actionMode == null )
{
// open new activity or update second fragment
showDetails( itemPosition );
}
else
{
// update ui or close CAB if no item selected
showCAB( itemPosition );
}
Метод showCAB (позиция) обновляет выбранный счетчик элементов, выделяет фон элемента и т.д.
Ответы
Ответ 1
Хорошо, я сделал это сегодня, благодаря этому сайту: http://www.miximum.fr/tutos/849-porting-the-contextual-anction-mode-for-pre-honeycomb-android-apps
В принципе, вам просто нужно установить для ListView ChoiceMode значение ListView.CHOICE_MODE_MULTIPLE
, чтобы установить onItemClickListener
, который будет проверять, какие элементы отмечены в ListView, и создать личный класс, реализующий ActionMode.Callback
, который будет управлять контекстуальным ActionBar.
Я отпустил этот блог-блог, чтобы увидеть все подробное и часть кода!
Ответ 2
Вы также можете посмотреть приложение Google I/O 2012. Он открывает исходный код и использует ActionBarSherlock. Они разработали совместимую версию классов ActionMode, которые отлично работают с АБС и на устройствах сотовой связи.
В частности, посмотрите:
В принципе, как и в случае с ABS, они используют встроенную реализацию ActionMode, когда она доступна, и возвращаются к пользовательской реализации на более старых устройствах.
Надеюсь, что это поможет!