若是是在ListView進行建立的上下文菜單,那麼如何獲取ListView所單擊列項的數據呢?java
有兩種方式可獲取:ide
一、 能夠經過在長時間點擊OnLongItemClick方法事件,將所單擊的View數據進行臨時保存,成爲一個全局變量,那麼在一個Activity裏面的全部方法內都可訪問佈局
二、 能夠經過onContextItemSelected方法裏面進行獲取ListView某一項的數據,this
a) AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();spa
b) String name = ((TextView) info.targetView.findViewById(R.id.bookName)).getText().toString();code
這種方式得到ListView佈局文件中對應的數據orm
localBookList.setOnItemLongClickListener(new OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> parent, View view,int position, long id) { list_Temp = (HashMap<String, Object>) parent.getItemAtPosition(position);//list_Temp是全局變量 return false; } });
如此,在建立ContextMenu的時候,首先會將數據存儲到臨時的list_Temp全局變量中,所以在ContextMenu的子Menu裏都可訪問到該ListView的子項的數據。另外也能夠採用:xml
@Override public boolean onContextItemSelected(MenuItem item) { AdapterContextMenuInfo info = (AdapterContextMenuInfo) item .getMenuInfo(); String name = ((TextView) info.targetView.findViewById(R.id.bookName)) .getText().toString(); switch (item.getItemId()) { case BOOK_CONTEXT_MENU_DETAIL: Toast.makeText(AndroidBook_MainActivity.this, name, 3).show(); break; default: break; } return super.onContextItemSelected(item); }這種方式只能獲取list_item.xml裏面定義的控件對應的值,沒法獲取其餘的值,好比說:ListView控件裏面有書名,。。。等等可是沒有文件在SD卡里面的路徑,除非將路徑的字符串也存儲到ListView裏面去。