ListView中單擊其中一項建立ContextMenu,如何獲取該localBookList...

若是是在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裏面去。
相關文章
相關標籤/搜索