Google Android - это несложно

Добро пожаловать на форум сайта startandroid.ru
Текущее время: 21 янв 2017, 14:37

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 29 ]  На страницу 1, 2  След.
Автор Сообщение
СообщениеДобавлено: 19 ноя 2012, 00:00 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 12:32
Сообщений: 1317
Благодарил (а): 0 раз.
Поблагодарили: 67 раз.
В этом уроке:

- работаем с ActionMode

Click here to read this article!

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Последний раз редактировалось damager82 23 июн 2016, 22:24, всего редактировалось 5 раз(а).

Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 05 янв 2013, 12:48 

Зарегистрирован: 30 дек 2012, 11:43
Сообщений: 19
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Подскажите как можно отследить. Есть 3 пункта меню в ActionMode...2 пункта должны работать только если выбран один элемент списка, а 3-ий пункт работает при любом выделении, или один пункт или несколько?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 14 янв 2013, 11:47 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 12:32
Сообщений: 1317
Благодарил (а): 0 раз.
Поблагодарили: 67 раз.
denisneposeda писал(а):
Подскажите как можно отследить. Есть 3 пункта меню в ActionMode...2 пункта должны работать только если выбран один элемент списка, а 3-ий пункт работает при любом выделении, или один пункт или несколько?

В списке определяйте, сколько элементов выделено, как-нить передавайте эту инфу объекту mode и перерисовывайте его (думаю, что invalidateOptionsMenu сработает).

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 21 фев 2013, 02:14 

Зарегистрирован: 12 окт 2012, 00:30
Сообщений: 9
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
у меня получилось так(предворительно засунул 2 первых пункта меню в группу с id = groupTwoItems)
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. public void onItemCheckedStateChanged(ActionMode mode, int position,
  2.                 long id, boolean checked) {
  3.         int itemCount = lvActionMode.getCheckedItemCount();
  4.         if (itemCount > 1) {
  5.                 mode.getMenu().setGroupVisible(R.id.groupTwoItems, false);
  6.         } else {
  7.                 mode.getMenu().setGroupVisible(R.id.groupTwoItems, true);
  8.         }
  9.        
  10.         Log.d(LOG_TAG, "position = " + position + ", checked = " + checked);
  11. }
  12.  


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 25 мар 2013, 10:07 

Зарегистрирован: 18 мар 2013, 14:45
Сообщений: 22
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Здравствуйте.
Если подставить в Адаптер свой view, то множественный выбор не работает.
Что необходимо сделать чтоб работал множественный выбор со своим view?

upd: Судя по логам множественный выбор работает:

D/myLogs(595): position = 4, checked = true
D/myLogs(595): position = 5, checked = true
D/myLogs(595): position = 5, checked = false
D/myLogs(595): position = 3, checked = true

Но визуально выделения нет.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 18 июл 2013, 01:43 

Зарегистрирован: 14 июл 2013, 13:22
Сообщений: 16
Откуда: Москва
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Serious писал(а):
Здравствуйте.
Если подставить в Адаптер свой view, то множественный выбор не работает.
Что необходимо сделать чтоб работал множественный выбор со своим view?

upd: Судя по логам множественный выбор работает:

D/myLogs(595): position = 4, checked = true
D/myLogs(595): position = 5, checked = true
D/myLogs(595): position = 5, checked = false
D/myLogs(595): position = 3, checked = true

Но визуально выделения нет.

Присоединяюсь к вопросу, аналогичная проблема, никак не могу решить.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 02 авг 2013, 20:39 

Зарегистрирован: 14 июл 2013, 13:22
Сообщений: 16
Откуда: Москва
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Разобрался, нужно было добавить
Код: [ Загрузить ] [ Скрыть ]
  1. android:background="?android:attr/activatedBackgroundIndicator" 
в файл XML, используемого в качестве пункта списка)


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 25 сен 2013, 15:36 

Зарегистрирован: 25 сен 2013, 15:23
Сообщений: 23
Благодарил (а): 4 раз.
Поблагодарили: 1 раз.
Пытаюсь по этому примеру сделать ExpandableListView с мульти-выбором и ActionMode.
Использую свой адаптер для child-ов.
Спасибо Dmitry88, выбранные строки теперь подсвечиваются.
Проблема в другом.
Длинным нажатием выбирается элемент и появляется ActionMode.
Все как надо.
Но вот короткие нажатия на другие элементы не приводят к выбору элемента. Остается один выбранный элемент.
Обработчик onItemCheckedStateChanged не отрабатывает (При первом длинном нажатии он отработал).
Если в этот момент выполнить
elv.setItemChecked(1, true);
то вторая строчка прекрасно добавляется к уже выделенной.
И обработчик onItemCheckedStateChanged отрабатывает.
Как добиться, чтобы ExpandableListView работал также как ListView в уроке?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 25 сен 2013, 16:04 

Зарегистрирован: 25 сен 2013, 15:23
Сообщений: 23
Благодарил (а): 4 раз.
Поблагодарили: 1 раз.
В обработчик onChildClick у контрола ExpandableListView
засунул
Код: [ Загрузить ] [ Скрыть ]
  1. elv.setItemChecked(elv.getPositionForView(v), !elv.isItemChecked(elv.getPositionForView(v))); 

Получилось подобие чего хотелось. Можно правда вставить проверку что режим выбора элементов включен (ActionMode активирован), но без проверки даже больше нравится. Выделение начинается даже по короткому нажатию.

Очень хочется разобраться почему не работает как на уроке, само без подпинывания.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 11 дек 2013, 13:15 

Зарегистрирован: 30 мар 2013, 23:52
Сообщений: 223
Благодарил (а): 14 раз.
Поблагодарили: 11 раз.
Проблема следующая.

ActionBarSherlock и ActionMode.

Если делать по уроку с просто вызовом ActionMode, то все работает. (необходимо только менять Activity на SherlockActivity и пр...)
Но если делать как с множественным выбором то не не работает... точнее эклипс не пускает запустить. ругается на обработчик... и предлагает создать методы сам в которых делает Menu,MenuItem наследником Android.View.* а Надо Sherlock.View.*.
И допустим мы ему позволяем это сделать... Но тогда Ничего не происходит. Что жми что не жми.

Я понимаю что вопрос скорее к Sherlock'у, но может кто сталкивался...

_________________
Мой первенец: MyMoney. Менеджер расходов

Бьем рекорды русских топов :)

Могу ответить на любые вопросы по маркетингу и развитию.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 11 дек 2013, 13:42 

Зарегистрирован: 30 мар 2013, 23:52
Сообщений: 223
Благодарил (а): 14 раз.
Поблагодарили: 11 раз.
http://androidperspective.wordpress.com ... -listview/

искал решение всю ночь и полдня... написал тут и сразу нашел...

_________________
Мой первенец: MyMoney. Менеджер расходов

Бьем рекорды русских топов :)

Могу ответить на любые вопросы по маркетингу и развитию.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 03 фев 2014, 00:45 

Зарегистрирован: 12 окт 2012, 16:31
Сообщений: 117
Благодарил (а): 3 раз.
Поблагодарили: 0 раз.
Как обработать нажатие на галку в левой части? Или убрать её вообще


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 03 фев 2014, 06:46 
Аватар пользователя

Зарегистрирован: 18 окт 2012, 12:17
Сообщений: 1098
Откуда: г. Красноярск
Благодарил (а): 26 раз.
Поблагодарили: 278 раз.
Digetix писал(а):
Как обработать нажатие на галку в левой части? Или убрать её вообще


При нажатии срабатывает onDestroyActionMode.
чтобы убрать можно попробывать что-то из этого: http://stackoverflow.com/questions/14964939/remove-done-button-of-actionmode


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 12 июл 2014, 14:46 

Зарегистрирован: 26 май 2014, 21:48
Сообщений: 5
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Моте кто знает, а как сделать свою обработку этой кнопки?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 19 ноя 2014, 16:19 

Зарегистрирован: 13 окт 2014, 14:58
Сообщений: 10
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
При вызванном меню после поворота экрана не вызывается onDestroyActionMode? Значит это меню где-то продолжает существовать?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 23 сен 2015, 10:46 

Зарегистрирован: 28 июн 2015, 04:13
Сообщений: 36
Благодарил (а): 17 раз.
Поблагодарили: 1 раз.
1. Тоже заметил, что при повороте экрана включённый ActionMode пропадает, а onDestroy в логе не появляется.
2. Ещё почему-то 3-й пункт меню никогда не показывается, хотя места, вроде полно. Даже когда поменял атрибут на app:showAsAction="always|withText"
3-й пункт не появился.
3. При использовании либы import android.support.v7.view.ActionMode; вместо import android.view.ActionMode;
выделяет красным new MultiChoiceModeListener в строке lvActionMode.setMultiChoiceModeListener(new MultiChoiceModeListener() {........
Так и не разобрался как это починить.
Пришлось отказаться от использования support lib


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 23 сен 2015, 14:19 

Зарегистрирован: 13 окт 2014, 14:58
Сообщений: 10
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
K_Vladimir писал(а):
3. При использовании либы import android.support.v7.view.ActionMode; вместо import android.view.ActionMode;
выделяет красным new MultiChoiceModeListener в строке lvActionMode.setMultiChoiceModeListener(new MultiChoiceModeListener() {........
Так и не разобрался как это починить.
Пришлось отказаться от использования support lib


А что пишет?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 23 сен 2015, 19:38 

Зарегистрирован: 28 июн 2015, 04:13
Сообщений: 36
Благодарил (а): 17 раз.
Поблагодарили: 1 раз.
Razor писал(а):
K_Vladimir писал(а):
3. При использовании либы import android.support.v7.view.ActionMode; вместо import android.view.ActionMode;
выделяет красным new MultiChoiceModeListener в строке lvActionMode.setMultiChoiceModeListener(new MultiChoiceModeListener() {........
Так и не разобрался как это починить.
Пришлось отказаться от использования support lib


А что пишет?


Пишет при компиляции: Error:(48, 79) error: <anonymous com.vladimir.kushnarev.p1131_actionmode.MainActivity$1> is not abstract and does not override abstract method onItemCheckedStateChanged(ActionMode,int,long,boolean) in MultiChoiceModeListener

Код: [ Загрузить ] [ Скрыть ]
  1. import android.os.Bundle; 
  2. import android.support.v7.app.AppCompatActivity; 
  3. import android.support.v7.view.ActionMode; 
  4. import android.util.Log; 
  5. //import android.view.ActionMode; 
  6. import android.view.Menu; 
  7. import android.view.MenuItem; 
  8. import android.widget.AbsListView.MultiChoiceModeListener; 
  9. import android.widget.ArrayAdapter; 
  10. import android.widget.ListView; 
  11.  
  12.  
  13. public class MainActivity extends AppCompatActivity { 
  14.  
  15.     //////////  Вариант для списка ListView 
  16.     ActionMode actionMode; 
  17.     ListView lvActionMode; 
  18.     final String LOG_TAG = "myLogs"; 
  19.  
  20.     String[] data = { "one", "two", "three", "four", "five" }; 
  21.  
  22.     public void onCreate(Bundle savedInstanceState) { 
  23.         super.onCreate(savedInstanceState); 
  24.         setContentView(R.layout.main); 
  25.  
  26.         ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
  27.                 android.R.layout.simple_list_item_activated_1, data); 
  28.         lvActionMode = (ListView) findViewById(R.id.lvActionMode); 
  29.         lvActionMode.setAdapter(adapter); 
  30.         lvActionMode.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL); 
  31.         lvActionMode.setMultiChoiceModeListener(new MultiChoiceModeListener() { 
  32.  
  33.             public boolean onCreateActionMode(ActionMode mode, Menu menu) { 
  34.                 mode.getMenuInflater().inflate(R.menu.context, menu); 
  35.                 return true; 
  36.             } 
  37.  
  38.             public boolean onPrepareActionMode(ActionMode mode, Menu menu) { 
  39.                 return false; 
  40.             } 
  41.  
  42.             public boolean onActionItemClicked(ActionMode mode, MenuItem item) { 
  43.                 mode.finish(); 
  44.                 return false; 
  45.             } 
  46.  
  47.             public void onDestroyActionMode(ActionMode mode) { 
  48.             } 
  49.  
  50.             public void onItemCheckedStateChanged(ActionMode mode, 
  51.                                                   int position, long id, boolean checked) { 
  52.                 Log.d(LOG_TAG, "position = " + position + ", checked = " 
  53.                         + checked); 
  54.             } 
  55.         }); 
  56.  
  57.     } 
  58.  
  59.     public boolean onCreateOptionsMenu(Menu menu) { 
  60.         getMenuInflater().inflate(R.menu.menu_main, menu); 
  61.         return true; 
  62.     } 


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 23 сен 2015, 19:45 
Аватар пользователя

Зарегистрирован: 23 ноя 2013, 17:08
Сообщений: 1106
Откуда: Ukraine
Благодарил (а): 30 раз.
Поблагодарили: 175 раз.
гугл: аннотация @Override

_________________
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 23 сен 2015, 19:57 

Зарегистрирован: 28 июн 2015, 04:13
Сообщений: 36
Благодарил (а): 17 раз.
Поблагодарили: 1 раз.
doter.ua писал(а):
гугл: аннотация @Override


В смысле добавить @Override в код?
Добавил, ничего не происходит. Она же не обязательна теперь..


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 29 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 4 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB