3

アクティビティを拡張するビューがあります。ListViewは、いくつかのリストアイテムを表示します。ユーザーが長クリックすると、編集、削除などを選択できるコンテキストメニューが表示され、アクションを実行するアイテムとして選択されたリストアイテムが識別されます。

onCreateには次のものがあります。

listView.setAdapter(adapter);
listView.setOnItemClickListener(onListClick);
listView.setOnItemLongClickListener(onListLongClick);
registerForContextMenu(listView);

onCreateContextMenuメソッドがあります

@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
    menu.setHeaderTitle("Context Menu");
    menu.add(0, v.getId(), 0, "Edit");
    menu.add(0, v.getId(), 0, "Delete");

}

また、onContextItemSelected

@Override
public boolean onContextItemSelected(MenuItem item) {

    if (item.getTitle() == "Edit") {
        // edit action
    } else if (item.getTitle() == "Delete") {
        // delete action
    } else {
        return false;
    }
    return true;
}

正しい行/リストアイテムを取得するためにここからどこに行くべきかわかりません。

4

1 に答える 1

5

ご提供いただいたコードからLink-1AdapterContextMenuInfoをご参照ください。

public boolean onContextItemSelected(MenuItem item) {

    if (item.getTitle() == "Edit") {
        AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
        editInfo(info.position);
    } else if (item.getTitle() == "Delete") {
        // TODO Delete action
    } else {
        return false;
    }

    return true;
}
于 2010-05-06T09:13:57.553 に答える