4

要素の1つを長押しするとContextMenuを作成するListViewがあります。このコンテキストメニューを作成したListViewで選択された要素(選択されたMenuItemではない)を見つけるにはどうすればよいですか?これが私のコードです:

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;
            }
        });
    }
});

コンテキストメニューから選択されたアイテムではなく、このコンテキストメニューをトリガーしたListViewアイテムが必要であることに注意してください。

4

1 に答える 1

8

あなたはそれが必要AdapterContextMenuInfoになります。

次のスニペットが役立ちます

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);
      }
于 2012-06-24T07:18:04.000 に答える