ListView - onContextItemSelected操纵项目,而不是toString

ListView - onContextItemSelected操纵项目,而不是toString

问题描述:

正如你可以在下面的代码中看到的,当我在ListView中的一个项目LongClick时,我得到一个弹出菜单选项来操纵项目(删除,更新等)。ListView - onContextItemSelected操纵项目,而不是toString

问题是我在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; 
} 

不喜欢:

yourAdapter.getItem(info.position); 

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

或更简单,

listOfItem.get(info.position); 
+0

你能更具体吗?在这种情况下**我的适配器**是什么? – GuyShoham

+0

@ user8465954你必须使用适配器为你的listview权利?或者你可以尝试一下Pavneet_Singh的建议。 –

+0

@Pavneet_Singh是啊,这可能会更方便和简单:) –