Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

AdapterContextMenuInfo is always null

Tags:

android

I tried doing this by the book from android dev docs:

// this didn't create a menu, i don't know why
//registerForContextMenu(getListView());

setListAdapter(new ArrayAdapter<Note>(this, R.layout.selectset_listitem) {
    @Override

    protected View getView(...) {
        ... custom layout ...

        // this creates a menu, but...
        registerForContextMenu(convertView);

        return convertView;
    }
}

And the onCreateContextMenu and onContextItemSelected almost exactly as in http://developer.android.com/guide/topics/ui/menus.html#context-menu.

here is how it looks in the docs (and my code):

@Override
public void onCreateContextMenu(ContextMenu menu, View v,
                                ContextMenuInfo menuInfo) {
  super.onCreateContextMenu(menu, v, menuInfo);
  MenuInflater inflater = getMenuInflater();
  inflater.inflate(R.menu.context_menu, menu);
}

but this part always gives me a null info:

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

The only thing that is really unique is that i've got a custom layout for list items (i.e. a couple of text fields and an image). Is there something i need to do to be able to get the index of the list item that the context menu was built for?

like image 461
leech Avatar asked Jan 19 '23 19:01

leech


2 Answers

You need to call the registerForContextMenu() in the activity on the ListView, and not on the view items in the adapter.

like image 128
theo Avatar answered Feb 01 '23 20:02

theo


getMenuInfo() will work on ListAdapter, not on views.

But, You can pass additional data with the tag of the view.

in

getView: vi.setTag(position) activity.registerForContextMenu(vi);

declare in Activity private int id;

onCreateContextMenu: id = (int) v.getTag();

onContextItemSelected:

you can use the id

like image 43
xnagyg Avatar answered Feb 01 '23 20:02

xnagyg