Регистрация AndroidForContextMenu вне действия - PullRequest
2 голосов
/ 21 декабря 2011

Я хочу использовать контекстное меню, когда пользователь нажимает на представление внутри адаптера. Проблема заключается в том, что OnClick для каждого представления находится внутри класса, который не является действием [это класс, расширяющий BaseAdapter], внутри общедоступного представления getView (конечная позиция int, представление convertView, родительский элемент ViewGroup).

Итак, когда я пытаюсь создать контекстное меню или зарегистрироваться в registerForContextMenu внутри этого класса, который расширяет только BaseAdapter, это невозможно.

Итак, вопрос в том, что онклик находится внутри этого класса «Неактивность». Можно ли дать этому классу параметры, позволяющие запустить контекстное меню?

Ответы [ 2 ]

2 голосов
/ 22 декабря 2011

Я хочу использовать контекстное меню, когда пользователь нажимает на представление внутри адаптера.

Надеюсь, что нет.Вы можете использовать контекстное меню, когда пользователь долго нажимает на элемент в AdapterView. Вот пример проекта , демонстрирующий это.

Все остальное (например, всплывающее сообщение «когда пользователь нажимает на представление внутри адаптера») должно быть AlertDialog, как предлагаетсяby @ coder_For_Life22.

Итак, когда я пытаюсь создать контекстное меню или зарегистрироваться в registerForContextMenu внутри этого класса, который расширяет только BaseAdapter, это невозможно.

Вы звоните registerForContextMenu() только один раз, для AdapterView.Вы делаете это из onCreate() упражнения, после того как вы позвонили setContentView() и, следовательно, создали AdapterView.

Все остальное должно быть AlertDialog.

Можно ли дать этому классу параметры, которые позволяют ему запускать контекстное меню?

Вам не нужно «давать этому классу параметры, которые позволяют ему запускать контекстное меню»,потому что вы звоните registerForContextMenu() только один раз, для AdapterView.

Все остальное должно быть AlertDialog.Вы можете добавить конструктор в Adapter, который принимает Activity в качестве параметра, который ваш Adapter хранит и использует для AlertDialog.Или, если Adapter является внутренним классом Activity, просто используйте MyActivityName.this для ссылки на Activity.

2 голосов
/ 21 декабря 2011

Вы можете использовать AlertDialog для этого ..

Это будет выглядеть примерно так:

gridview.setOnItemLongClickListener(new OnItemLongClickListener() {
    public boolean onItemLongClick(AdapterView<?> parent, View v, int position, long id)
    {
        showOptionsMenu(position);
        return true;
    }

});

public void showOptionsMenu(int position)
{
new AlertDialog.Builder(this)
.setTitle("test").setCancelable(true).setItems(R.array.myOptions,
          new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialoginterface, int i) {
                   //take actions here according to what the user has selected
               }
         }
)
.show();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...