2017-09-04 65 views
0

正如你可以在下面的代碼中看到的,當我在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; 
} 

回答

2

不喜歡:

yourAdapter.getItem(info.position); 

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

或更簡單,

listOfItem.get(info.position); 
+0

你能更具體嗎?在這種情況下**我的適配器**是什麼? – GuyShoham

+0

@ user8465954你必須使用適配器爲你的listview權利?或者你可以嘗試一下Pavneet_Singh的建議。 –

+0

@Pavneet_Singh是啊,這可能會更方便和簡單:) –