Zag*_*rax 3 android listview android-contextmenu
我有一个带有删除和类似选项的'经典'上下文菜单的ListView.由于我从SharedPreferences对象中删除,我需要检索密钥,这是设置到ListView项目中的文本.
我试过以下代码:
@Override
public boolean onContextItemSelected(MenuItem item){
AdapterContextMenuInfo saved = (AdapterContextMenuInfo) item.getMenuInfo();
TextView view = (TextView)findViewById((int) saved.id);
Log.d("DEBUG:", "before key");
String key = view.getText().toString();
Log.d("DEBUG:", "after...");
switch (item.getItemId()){
case R.id.conmenu_delete:
return true;
case R.id.conmenu_copy:
return true;
case R.id.conmenu_send:
return true;
default:
return super.onContextItemSelected(item);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,不幸的是,它在尝试从View中检索文本时崩溃,正如我从日志中所知道的那样.
jen*_*nzz 11
你已经正确地投了这个AdapterContextMenuInfo.
从那里,您可以获得可以再次投射到窗口小部件中的targetView.我想这是TextView你的情况.在那TextView你可以调用简单的getText()方法.
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
String key = ((TextView) info.targetView).getText().toString();
switch (item.getItemId()){
case R.id.conmenu_delete:
return true;
case R.id.conmenu_copy:
return true;
case R.id.conmenu_send:
return true;
default:
return super.onContextItemSelected(item);
}
}
Run Code Online (Sandbox Code Playgroud)
如果列表中填充了自定义对象,则显然必须将其强制转换为相应的类型,例如:
Person person = (Person) getListAdapter().getItem(info.position);
String key = person.getName();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4507 次 |
| 最近记录: |