Урок 113. Android 3. ActionMode, как альтернатива контекстному меню
Урок 113. Android 3. ActionMode, как альтернатива контекстному меню
В этом уроке:
- работаем с ActionMode
Click here to read this article!
- работаем с ActionMode
Click here to read this article!
Последний раз редактировалось damager82 25 май 2017, 13:36, всего редактировалось 6 раз.
-
- Сообщения: 19
- Зарегистрирован: 30 дек 2012, 10:43
Re: Урок 113. Android 3. ActionMode, как альтернатива контек
Подскажите как можно отследить. Есть 3 пункта меню в ActionMode...2 пункта должны работать только если выбран один элемент списка, а 3-ий пункт работает при любом выделении, или один пункт или несколько?
Re: Урок 113. Android 3. ActionMode, как альтернатива контек
В списке определяйте, сколько элементов выделено, как-нить передавайте эту инфу объекту mode и перерисовывайте его (думаю, что invalidateOptionsMenu сработает).denisneposeda писал(а):Подскажите как можно отследить. Есть 3 пункта меню в ActionMode...2 пункта должны работать только если выбран один элемент списка, а 3-ий пункт работает при любом выделении, или один пункт или несколько?
Re: Урок 113. Android 3. ActionMode, как альтернатива контек
у меня получилось так(предворительно засунул 2 первых пункта меню в группу с id = groupTwoItems)
Код: Выделить всё
public void onItemCheckedStateChanged(ActionMode mode, int position,
long id, boolean checked) {
int itemCount = lvActionMode.getCheckedItemCount();
if (itemCount > 1) {
mode.getMenu().setGroupVisible(R.id.groupTwoItems, false);
} else {
mode.getMenu().setGroupVisible(R.id.groupTwoItems, true);
}
Log.d(LOG_TAG, "position = " + position + ", checked = " + checked);
}
Re: Урок 113. Android 3. ActionMode, как альтернатива контек
Здравствуйте.
Если подставить в Адаптер свой 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
Но визуально выделения нет.
Если подставить в Адаптер свой 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
Но визуально выделения нет.
Re: Урок 113. Android 3. ActionMode, как альтернатива контек
Присоединяюсь к вопросу, аналогичная проблема, никак не могу решить.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
Но визуально выделения нет.
Re: Урок 113. Android 3. ActionMode, как альтернатива контек
Разобрался, нужно было добавить в файл XML, используемого в качестве пункта списка)
Код: Выделить всё
android:background="?android:attr/activatedBackgroundIndicator"
Re: Урок 113. Android 3. ActionMode, как альтернатива контек
Пытаюсь по этому примеру сделать ExpandableListView с мульти-выбором и ActionMode.
Использую свой адаптер для child-ов.
Спасибо Dmitry88, выбранные строки теперь подсвечиваются.
Проблема в другом.
Длинным нажатием выбирается элемент и появляется ActionMode.
Все как надо.
Но вот короткие нажатия на другие элементы не приводят к выбору элемента. Остается один выбранный элемент.
Обработчик onItemCheckedStateChanged не отрабатывает (При первом длинном нажатии он отработал).
Если в этот момент выполнить
elv.setItemChecked(1, true);
то вторая строчка прекрасно добавляется к уже выделенной.
И обработчик onItemCheckedStateChanged отрабатывает.
Как добиться, чтобы ExpandableListView работал также как ListView в уроке?
Использую свой адаптер для child-ов.
Спасибо Dmitry88, выбранные строки теперь подсвечиваются.
Проблема в другом.
Длинным нажатием выбирается элемент и появляется ActionMode.
Все как надо.
Но вот короткие нажатия на другие элементы не приводят к выбору элемента. Остается один выбранный элемент.
Обработчик onItemCheckedStateChanged не отрабатывает (При первом длинном нажатии он отработал).
Если в этот момент выполнить
elv.setItemChecked(1, true);
то вторая строчка прекрасно добавляется к уже выделенной.
И обработчик onItemCheckedStateChanged отрабатывает.
Как добиться, чтобы ExpandableListView работал также как ListView в уроке?
Re: Урок 113. Android 3. ActionMode, как альтернатива контек
В обработчик onChildClick у контрола ExpandableListView
засунул
Получилось подобие чего хотелось. Можно правда вставить проверку что режим выбора элементов включен (ActionMode активирован), но без проверки даже больше нравится. Выделение начинается даже по короткому нажатию.
Очень хочется разобраться почему не работает как на уроке, само без подпинывания.
засунул
Код: Выделить всё
elv.setItemChecked(elv.getPositionForView(v), !elv.isItemChecked(elv.getPositionForView(v)));
Очень хочется разобраться почему не работает как на уроке, само без подпинывания.
Re: Урок 113. Android 3. ActionMode, как альтернатива контек
Проблема следующая.
ActionBarSherlock и ActionMode.
Если делать по уроку с просто вызовом ActionMode, то все работает. (необходимо только менять Activity на SherlockActivity и пр...)
Но если делать как с множественным выбором то не не работает... точнее эклипс не пускает запустить. ругается на обработчик... и предлагает создать методы сам в которых делает Menu,MenuItem наследником Android.View.* а Надо Sherlock.View.*.
И допустим мы ему позволяем это сделать... Но тогда Ничего не происходит. Что жми что не жми.
Я понимаю что вопрос скорее к Sherlock'у, но может кто сталкивался...
ActionBarSherlock и ActionMode.
Если делать по уроку с просто вызовом ActionMode, то все работает. (необходимо только менять Activity на SherlockActivity и пр...)
Но если делать как с множественным выбором то не не работает... точнее эклипс не пускает запустить. ругается на обработчик... и предлагает создать методы сам в которых делает Menu,MenuItem наследником Android.View.* а Надо Sherlock.View.*.
И допустим мы ему позволяем это сделать... Но тогда Ничего не происходит. Что жми что не жми.
Я понимаю что вопрос скорее к Sherlock'у, но может кто сталкивался...
Мой первенец: MyMoney. Менеджер расходов
Бьем рекорды русских топов
Могу ответить на любые вопросы по маркетингу и развитию.
Бьем рекорды русских топов
Могу ответить на любые вопросы по маркетингу и развитию.
Re: Урок 113. Android 3. ActionMode, как альтернатива контек
http://androidperspective.wordpress.com ... -listview/
искал решение всю ночь и полдня... написал тут и сразу нашел...
искал решение всю ночь и полдня... написал тут и сразу нашел...
Мой первенец: MyMoney. Менеджер расходов
Бьем рекорды русских топов
Могу ответить на любые вопросы по маркетингу и развитию.
Бьем рекорды русских топов
Могу ответить на любые вопросы по маркетингу и развитию.
Re: Урок 113. Android 3. ActionMode, как альтернатива контек
Как обработать нажатие на галку в левой части? Или убрать её вообще
Re: Урок 113. Android 3. ActionMode, как альтернатива контек
При нажатии срабатывает onDestroyActionMode.Digetix писал(а):Как обработать нажатие на галку в левой части? Или убрать её вообще
чтобы убрать можно попробывать что-то из этого: http://stackoverflow.com/questions/1496 ... actionmode
Re: Урок 113. Android 3. ActionMode, как альтернатива контек
Моте кто знает, а как сделать свою обработку этой кнопки?
Re: Урок 113. Android 3. ActionMode, как альтернатива контек
При вызванном меню после поворота экрана не вызывается onDestroyActionMode? Значит это меню где-то продолжает существовать?
-
- Сообщения: 36
- Зарегистрирован: 28 июн 2015, 03:13
Re: Урок 113. Android 3. ActionMode, как альтернатива контек
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
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
Re: Урок 113. Android 3. ActionMode, как альтернатива контек
А что пишет?K_Vladimir писал(а): 3. При использовании либы import android.support.v7.view.ActionMode; вместо import android.view.ActionMode;
выделяет красным new MultiChoiceModeListener в строке lvActionMode.setMultiChoiceModeListener(new MultiChoiceModeListener() {........
Так и не разобрался как это починить.
Пришлось отказаться от использования support lib
-
- Сообщения: 36
- Зарегистрирован: 28 июн 2015, 03:13
Re: Урок 113. Android 3. ActionMode, как альтернатива контек
Пишет при компиляции: 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 MultiChoiceModeListenerRazor писал(а):А что пишет?K_Vladimir писал(а): 3. При использовании либы import android.support.v7.view.ActionMode; вместо import android.view.ActionMode;
выделяет красным new MultiChoiceModeListener в строке lvActionMode.setMultiChoiceModeListener(new MultiChoiceModeListener() {........
Так и не разобрался как это починить.
Пришлось отказаться от использования support lib
Код: Выделить всё
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.view.ActionMode;
import android.util.Log;
//import android.view.ActionMode;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.AbsListView.MultiChoiceModeListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class MainActivity extends AppCompatActivity {
////////// Вариант для списка ListView
ActionMode actionMode;
ListView lvActionMode;
final String LOG_TAG = "myLogs";
String[] data = { "one", "two", "three", "four", "five" };
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_activated_1, data);
lvActionMode = (ListView) findViewById(R.id.lvActionMode);
lvActionMode.setAdapter(adapter);
lvActionMode.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
lvActionMode.setMultiChoiceModeListener(new MultiChoiceModeListener() {
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
mode.getMenuInflater().inflate(R.menu.context, menu);
return true;
}
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
mode.finish();
return false;
}
public void onDestroyActionMode(ActionMode mode) {
}
public void onItemCheckedStateChanged(ActionMode mode,
int position, long id, boolean checked) {
Log.d(LOG_TAG, "position = " + position + ", checked = "
+ checked);
}
});
}
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
}
Re: Урок 113. Android 3. ActionMode, как альтернатива контек
гугл: аннотация @Override
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
-
- Сообщения: 36
- Зарегистрирован: 28 июн 2015, 03:13
Re: Урок 113. Android 3. ActionMode, как альтернатива контек
В смысле добавить @Override в код?doter.ua писал(а):гугл: аннотация @Override
Добавил, ничего не происходит. Она же не обязательна теперь..