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里面去。
相关文章
相关标签/搜索