Урок 15. Контекстное меню
Урок 15. Контекстное меню
Последний раз редактировалось damager82 28 апр 2017, 10:31, всего редактировалось 11 раз.
Re: Урок 15. Контекстное меню
В уроке есть реплика
Подскажите, пожалуйста
Возможно я пропустил, но очень хотелось бы увидеть использование этой возможности. Сейчас столкнулся именно с такой задачей - нужно открыть контекстное меню для элемента списка ListView, это получается. А вот получить тот элемент списка на котором клацнули - не выходит.- ContextMenu.ContextMenuInfo – содержит доп.информацию, когда контекстное меню вызвано для элемента списка. Пока мы это не используем, но когда будем изучать списки увидим, что штука полезная.
Подскажите, пожалуйста
Re: Урок 15. Контекстное меню
А урок 51,52 смотрели?andev писал(а):Возможно я пропустил, но очень хотелось бы увидеть использование этой возможности. Сейчас столкнулся именно с такой задачей - нужно открыть контекстное меню для элемента списка ListView, это получается. А вот получить тот элемент списка на котором клацнули - не выходит.
Re: Урок 15. Контекстное меню
Нет, прочел название про CursorAdapter и не предположил, что там может рассматриваться и необходимый мне функционал
Спасибо
Спасибо
Re: Урок 15. Контекстное меню
Не забывайте про поиск. Он на сайте есть, справа сверху )
Или его там совсем не видно?
Или его там совсем не видно?
Re: Урок 15. Контекстное меню
Так, хорошо, посмотрел, возник другой вопрос
У меня ситуация следующая - в ListView отображен список абонентов, у каждого может быть от 1 до нескольких телефонов.
При щелчке на абоненте мне нужно в случае 1 телефона возвращать через PutExtra этот телефон назад (эта активность вызывается для получения телефона startForResult), а в случае нескольких телефонов нужно показывать что-то наподобие контекстного меню с выбором этих телефонов и при выборе одного из них так же его возвращать.
Следуя логике урока, я должен зарегистрировать мой ListView на создание контекстного меню при помощи registerForContextMenu(lvSimple) и далее все действия производить в нем. Однако, если у меня 1 телефон, то ничего вызывать не нужно и сразу можно его возвращать, т.е. было бы предпочтительнее на ListView слушать onListItemClick(), при выборе пункта определять его и проверять
Как лучше сделать?
У меня ситуация следующая - в ListView отображен список абонентов, у каждого может быть от 1 до нескольких телефонов.
При щелчке на абоненте мне нужно в случае 1 телефона возвращать через PutExtra этот телефон назад (эта активность вызывается для получения телефона startForResult), а в случае нескольких телефонов нужно показывать что-то наподобие контекстного меню с выбором этих телефонов и при выборе одного из них так же его возвращать.
Следуя логике урока, я должен зарегистрировать мой ListView на создание контекстного меню при помощи registerForContextMenu(lvSimple) и далее все действия производить в нем. Однако, если у меня 1 телефон, то ничего вызывать не нужно и сразу можно его возвращать, т.е. было бы предпочтительнее на ListView слушать onListItemClick(), при выборе пункта определять его и проверять
Код: Выделить всё
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
AbonentEntity entity = abonentAdapter.getItem(position);
int count = entity.getPhonesCount();
if (count == 1) {
String number = entity.getPhones().get(0);
Intent intent = new Intent();
intent.putExtra("number", number);
setResult(RESULT_OK, intent);
this.finish();
} else if (count > 1) {
// Создание контекстного меню
}
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Урок 15. Контекстное меню
Скорее всего, лучше будет использовать AlertDialog как 62 уроке.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Урок 15. Контекстное меню
да вот тоже на него подумал, сейчас попробую реализовать
Re: Урок 15. Контекстное меню
Сделал, но весьма неуклюже, может быть кто-то предложит более простое решение?
http://zalil.ru/33069255
http://zalil.ru/33069255
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Урок 15. Контекстное меню
Контекстное меню не на много лучше выглядит. Точнее так же, только без заголовка.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Урок 15. Контекстное меню
я не в плане внешнего вида.
первое что беспокоит - передача массива телефонов через переменную класса (есть Bundle args но не совсем понял как использовать)
первое что беспокоит - передача массива телефонов через переменную класса (есть Bundle args но не совсем понял как использовать)
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Урок 15. Контекстное меню
А зачем переписывать телефоны в массив если можно использовать ArrayAdapter? К тому же список телефонов хранится в ArrayList. Достаточно передать в диалог выбранного абонента (через Bundle args), а он пусть сам достает список телефонов.
Bundle используется почти так же как и Extras, только передается через параметры. Там ничего сложного нет.
Кстати, телефоны как хранятся, случайно не в базе данных?
Bundle используется почти так же как и Extras, только передается через параметры. Там ничего сложного нет.
Кстати, телефоны как хранятся, случайно не в базе данных?
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Урок 15. Контекстное меню
нет, не в БД, подсасываются при каждом включении приложения в коллекцию типа Abonent, т.к. хранить их в БД не вижу никакой практической выгоды.
Re: Урок 15. Контекстное меню
В данный момент контекстное меню всплывает в одном и том же месте - чуть ниже "Text size".
А как сделать, чтобы контекстное меню для "Text color" всплывало чуть ниже "Text color", а для "Text size" - чуть ниже "Text size"?
А как сделать, чтобы контекстное меню для "Text color" всплывало чуть ниже "Text color", а для "Text size" - чуть ниже "Text size"?
Re: Урок 15. Контекстное меню
подскажите, у мен куча EditText и я всем им повесил одинаковое меню
как мне теперь определить из какого EditText было вызванно меню?
как мне теперь определить из какого EditText было вызванно меню?
Re: Урок 15. Контекстное меню
В вызов onCreateContextMenu (ContextMenu menu, View v, ContextMenuInfo menuInfo) передается объект View v-это и есть тот объект с которого пришел вызов контекстного меню, в вашем случае EditTextalex6999 писал(а):подскажите, у мен куча EditText и я всем им повесил одинаковое меню
как мне теперь определить из какого EditText было вызванно меню?
Re: Урок 15. Контекстное меню
но обрабатываю я нажатие в onContextItemSelected(MenuItem item)
где тут view?
хотя....
правильно-ли понял, onCreateContextMenu вызывается каждый раз при долгом нажии пальцем и мне надо просто запомнить обьект в переменную и потом пользоватся этой переменной в onContextItemSelected?
немного корявенько.
однако, если onCreateContextMenu вызывается при вызове registerForContextMenu, то такой метод не сработает.
где тут view?
хотя....
правильно-ли понял, onCreateContextMenu вызывается каждый раз при долгом нажии пальцем и мне надо просто запомнить обьект в переменную и потом пользоватся этой переменной в onContextItemSelected?
немного корявенько.
однако, если onCreateContextMenu вызывается при вызове registerForContextMenu, то такой метод не сработает.
Re: Урок 15. Контекстное меню
Если нужно производить действия над объектом из которого вызвано контекстное меню, похоже так и нужно сделать. Разрабы не посчитали нужным передавать объект в обработчик выбора пунктов.alex6999 писал(а):но обрабатываю я нажатие в onContextItemSelected(MenuItem item)
где тут view?
хотя....
правильно-ли понял, onCreateContextMenu вызывается каждый раз при долгом нажии пальцем и мне надо просто запомнить обьект в переменную и потом пользоватся этой переменной в onContextItemSelected?
немного корявенько.
Re: Урок 15. Контекстное меню
спасибо, заработало.
Re: Урок 15. Контекстное меню
Здравстуйте!
У меня ругается
public void onCreateContextMenu(ContextMenu ...
пишет, что void не подходит для onCreateContextMenu, но если уберу void, то дает пять быстрых решений
create class "ContextMenu" in package "onCreateContextMenu"
create interface {the same}
create enum {the same}
change to onCreateCOntextMenuListener(android.view.View)
fix setup
У меня ругается
public void onCreateContextMenu(ContextMenu ...
пишет, что void не подходит для onCreateContextMenu, но если уберу void, то дает пять быстрых решений
create class "ContextMenu" in package "onCreateContextMenu"
create interface {the same}
create enum {the same}
change to onCreateCOntextMenuListener(android.view.View)
fix setup