идентифицирующий идентификатор listitem для contextmenu - PullRequest
3 голосов
/ 06 мая 2010

У меня есть вид, который расширяет активность. 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;
}

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

1 Ответ

5 голосов
/ 06 мая 2010

Вы можете использовать AdapterContextMenuInfo, пожалуйста, обратитесь Ссылка-1 из кода, который вы предоставили,

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...