如果是在ListView进行创建的上下文菜单,那么如何获取ListView所单击列项的数据呢?
有两种方式可获取:
1、 可以通过在长时间点击OnLongItemClick方法事件,将所单击的View数据进行临时保存,成为一个全局变量,那么在一个Activity里面的所有方法内均可访问
2、 可以通过onContextItemSelected方法里面进行获取ListView某一项的数据,
a) AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
b) String name = ((TextView) info.targetView.findViewById(R.id.bookName)).getText().toString();
这种方式获得ListView布局文件中对应的数据
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的子项的数据。另外也可以采用:
@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里面去。