ListView - onContextItemSelected操纵项而不是toString

时间:2017-09-04 16:15:12

标签: android listview

正如您在下面的代码中看到的,当我长按ListView中的项目时,我会看到一个弹出菜单,其中包含操作项目的选项(删除,更新等)。

问题是我在item.toString上使用我的函数而不是项目本身。 我如何获得项目本身,并将其作为我的函数中的参数?

onCreateContextMenu:

public void onCreateContextMenu(final ContextMenu menu, final View v, final ContextMenu.ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    if (v.getId() == R.id.db_list_view) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu_list, menu);
    }
}

onContextItemSelected:

public boolean onContextItemSelected(android.view.MenuItem item) {
    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
    Object obj = lv.getItemAtPosition(info.position);
    String nameToString = obj.toString();

    if (item.getTitle().equals("Delete")) {
        deletePlayerFromLongClick(nameToString);
    } else if (item.getTitle().equals("Update")) {
        updatePlayerFromLongClick(nameToString);
    } else if (item.getTitle().equals("Change Host/Guest")) {
        changeMembership(nameToString);
    }
    return true;
}

1 个答案:

答案 0 :(得分:2)

喜欢:

yourAdapter.getItem(info.position);

((YourAdapter)lv.getAdapter()).getItem(position);

甚至更简单,

listOfItem.get(info.position);