Контекстное меню адаптера кнопки Gridview

#android #gridview #button #adapter

#Android #просмотр сетки #кнопка #адаптер

Вопрос:

У меня есть разговорник с возможностью сохранения образца на SD. Я использую настройку Gridview со следующим кодом для адаптера кнопок:

 public View getView(int position, View convertView, ViewGroup parent) {
    try {
        final Sample sample = board.getSamples().get(position);

        if (sample != null) {

            Button button = new Button(context);
            button.setText(sample.getName());
            button.setTextColor(Color.WHITE); 
            button.setTextSize(12);
            button.setOnClickListener(new OnClickListener() {

                public void onClick(View v) {
                    context.play(sample);
                }

            });

            // TODO Implement this correctly.
             button.setOnLongClickListener(new OnLongClickListener() {
             public boolean onLongClick(View v) {

             return context.saveToSD(sample);


             }
             });

            return button;
        }
    } catch (IndexOutOfBoundsException e) {
        Log.e(getClass().getCanonicalName(), "No sample at position "
                  position);
    }

    return null;
}
  

Я хочу интегрировать контекстное меню здесь при длительном нажатии, чтобы указать, где сохранить образец. Кажется, я не могу зарегистрировать кнопку для контекстного меню в этом методе (т.Е. registerForContextMenu (кнопка), поскольку это выдает мне ошибки.

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

Спасибо

Ответ №1:

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

Я не использую contextmenu, а вместо этого использую 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();
}
  

Надеюсь, это поможет.