Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Bolbine84455
5 / 5 / 3
Регистрация: 12.03.2014
Сообщений: 335
#1

Контекстное меню не работает

17.12.2016, 10:10. Просмотров 944. Ответов 2
Метки нет (Все метки)

Доброго времени суток.
Я отбираю записи из базы и формирую список в ListView, насаживая на каждый элемент событие onClick, чтобы открывать запись.
Фрагмент кода ниже
Кликните здесь для просмотра всего текста

Java
1
2
3
4
5
6
7
8
9
10
@Override
    protected void onCreate(Bundle savedInstanceState) {
//...
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.custom_spinner_layout, listRecord);
        adapter.setDropDownViewResource(android.R.layout.simple_list_item_1);
        Singleton.getInstance().setAdapter(adapter); // (!!!)
        ListView listView = (ListView) findViewById(R.id.list_view);
        listView.setAdapter(adapter);
        listView.setOnItemClickListener(mMessageClickedHandler);
}


Следуя примерам из интернета написал следующее:
Кликните здесь для просмотра всего текста

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public static final int CONTEXT_MENU_EDIT_ITEM = 101;
    public static final int CONTEXT_MENU_DELETE_ITEM = 102;
 
    @Override
    public void onCreateContextMenu(ContextMenu contextMenu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
        String selectedWord = ((TextView) info.targetView).getText().toString();
        long selectedWordId = info.id;
 
        contextMenu.setHeaderTitle(selectedWord);
        contextMenu.add(0, CONTEXT_MENU_EDIT_ITEM, 0, "Редактировать");
        contextMenu.add(0, CONTEXT_MENU_DELETE_ITEM, 1, "Удалить");
    }
 
    @Override
    public boolean onContextItemSelected(MenuItem item)
    {
        CharSequence message;
        switch (item.getItemId())
        {
            case CONTEXT_MENU_EDIT_ITEM:
                message = "Выбран пункт Редактировать";
                break;
            case CONTEXT_MENU_DELETE_ITEM:
                message = "Выбран пункт Удалить";
                break;
            default:
                return super.onContextItemSelected(item);
        }
        Toast toast = Toast.makeText(this, message, Toast.LENGTH_SHORT);
        toast.setGravity(Gravity.CENTER, 0, 0);
        toast.show();
        return true;
    }


Затея была в том, чтобы помимо onCLick нацепить на эти элементы еще и OnItemLongClick с диалогом для удаления, но подход через onCreateContextMenu показался мне более простым и идеологически правильным.
Т.е. в конечном итоге я хочу добиться, чтобы при OnItemLongClick всплывал диалог со списком допустимых действий.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.12.2016, 10:10
Ответы с готовыми решениями:

ListView и контекстное меню
Подскажите как сделать так, чтобы контекстное меню знало пункт listview из...

Контекстное меню в ListView
Здравствуйте,выложите пожалуйста рабочий код контекстного меню для listview и...

Контекстное меню RecyclerView
Здравствуйте! Возникла задача создать контекстное меню для recyclerView, при...

Контекстное меню на ExpandableListView
Здравствуйте! подскажите как правильно определить пункт ExpandableListView...

Контекстное меню вместо опционального
Здравствуйте! Подскажите, возможно ли сделать так, чтобы при нажатии кнопки...

2
fraley
110 / 110 / 43
Регистрация: 24.05.2015
Сообщений: 329
17.12.2016, 11:24 #2
Лучший ответ Сообщение было отмечено Bolbine84455 как решение

Решение

Во-первых этот треш с присобачиванием листинера к каждому элементу...
Нужно к ListView присоединить листинер таким образом:
Java
1
2
3
4
5
6
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                //position - порядковый номер нажатого элемента
            }
        });
Во-вторых, по поводу контекстного меню - лень писать, вот первый же пример:
http://www.compiletimeerror.com/2013...h-example.html
Единственное, в registerForContextMenu прописать ListView.
1
Bolbine84455
17.12.2016, 11:59  [ТС]     Контекстное меню не работает
  #3

Не по теме:


Цитата Сообщение от fraley Посмотреть сообщение
Во-вторых, по поводу контекстного меню - лень писать, вот первый же пример:
http://www.compiletimeerror.com/2013...h-example.html
Единственное, в registerForContextMenu прописать ListView.
Спасибо. Забыл зарегистрировать ListView

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.12.2016, 11:59
Привет! Вот еще темы с ответами:

При долгом нажатии вывести контекстное меню
Здравствуйте, подскажите, пожалуйста, как сделать так, чтобы при долгом нажатии...

Как создать контекстное меню. Например нажимая на richTextBox правой кнопкой мыши, мне бы предоставлялось контекстное меню
Как создать контекстное меню. Например нажимая на richTextBox правой кнопкой...

Не работает контекстное меню
Здравствуйте! Подскажите, почему когда я запускаю приложение компилляцией из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru