Verkrijg geselecteerde item in een ListItem ContextMenu

Ik heb een ListView die een ContextMenu maakt door lang op een van zijn elementen te drukken. Hoe vind ik het element dat is geselecteerd in de ListView die dit contextmenu heeft gemaakt (niet het geselecteerde menu-item)? Hier is mijn code:

list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {
    @Override
    public void onCreateContextMenu(ContextMenu menu, final View v,
            ContextMenuInfo menuInfo) {
        menu.setHeaderTitle("Actions");
        android.view.MenuItem remove = menu.add("Remove");
        final int selectedItem = ((ListView)v).getSelectedItemPosition();
        remove.setOnMenuItemClickListener(new OnMenuItemClickListener() {   
            @Override
            public boolean onMenuItemClick(android.view.MenuItem item) {
                doSomething(listAdapter.getItem(selectedItem));//NPE here
                return true;
            }
        });
    }
});

Houd er rekening mee dat ik niet het item wil dat is geselecteerd in het contextmenu, maar het ListView-item dat dit contextmenu heeft geactiveerd.

4

1 antwoord

Hiervoor heeft u AdapterContextMenuInfo nodig.

Het volgende fragment helpt u

public boolean onContextItemSelected(MenuItem item) {
      AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
      String[] names = getResources().getStringArray(R.array.names);
      switch(item.getItemId()) {
      case R.id.edit:
            Toast.makeText(this, "You have chosen the " + getResources().getString(R.string.edit) +
                        " context menu option for " + names[(int)info.id],
                        Toast.LENGTH_SHORT).show();
            return true;
      …………………..
      default:
            return super.onContextItemSelected(item);
      }
8
toegevoegd
U bent welkom :). Ik weet zeker dat uw probleem is opgelost
toegevoegd de auteur Vipul Shah, de bron
Bedankt Vipul, dat bracht me op de goede weg.
toegevoegd de auteur Jeshurun, de bron
Ja, ik sloeg het uit zodra je zei dat ik AdapterContextMenuInfo nodig heb :)
toegevoegd de auteur Jeshurun, de bron
Het werkt voor mij, het zal werken voor ArrayList zoals Playlist_Title.get (info.position) is voor degenen die ArrayList gebruiken. Dank je. :)
toegevoegd de auteur Chintan Khetiya, de bron