Почему MenuItem.AdapterContextMenuInfo имеет значение NULL, если в моем представлении списка есть пользовательский адаптер? - PullRequest
0 голосов
/ 25 мая 2010

Мой вопрос: Прежде чем я пойду и использую OnLongClickListener, есть ли лучший способ передать информацию о том, «что щелкнули, чтобы создать это контекстное меню», когда у вашего представления списка есть собственный адаптер?

Вот некоторые детали:

Обычно мой код может делать что-то вроде этого:

public boolean onContextItemSelected(MenuItem item) {
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();

а затем продолжай и будь счастлив.

Однако с тех пор, как я представил собственный адаптер, item.getMenuInfo () имеет значение null. Это большая проблема, потому что мой код больше не знает, какой элемент был нажат. (Мой пользовательский адаптер делает каждую строку списка флажком и текстовым представлением)

Я попробовал это, но не получилось: Создал мой собственный специальный AdapterContextMenuInfo (называемый «HasAViewMenuInfo»), но когда я передаю его в этом методе, он оказывается нулевым в меню

public void onCreateContextMenu(ContextMenu menu, View v,
        ContextMenuInfo menuInfo) 
{
    super.onCreateContextMenu(menu, v, new HasAViewMenuInfo(v));

1 Ответ

1 голос
/ 25 мая 2010

Я подозреваю, что ваша проблема:

Мой пользовательский адаптер делает каждую строку списка флажок и текстовое представление

Временно избавиться от флажка. Если ваше контекстное меню теперь работает, значит, флажок является проблемой. Попробуйте вместо этого переключиться на CheckedTextView - это все равно лучше поддерживается ListView (например, используйте CHOICE_MODE_MULTIPLE, setItemChecked()).

Я использовал контекстные меню с пользовательскими адаптерами, и у меня не было проблем. Но я не использовал флажки в своих строках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...