mat*_*boy 1 android android-listview android-menu android-actionbar
我需要通过长按选择访问ListView项中的文本.对于旧的Android版本,我已使用下面的代码成功完成了上下文菜单.
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.context_menu, menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
String text = ((TextView) info.targetView).getText().toString();
switch (item.getItemId()) {
case R.id.getText:
getText(text);
return true;
default:
return super.onContextItemSelected(item);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,对于较新的Android版本,我希望使用上下文操作栏执行此操作,但无法弄清楚如何在栏中选择项目后提取所选文本.以下代码不起作用.
myListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
myListView.setMultiChoiceModeListener(new MultiChoiceModeListener() {
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
String text = ((TextView) info.targetView).getText().toString();
switch (item.getItemId()) {
case R.id.contextDelete:
getText(text);
return true;;
default:
return false;
}
}
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(R.menu.context_menu, menu);
return true;
}
//Other actionmode methods...
});
Run Code Online (Sandbox Code Playgroud)
上下文操作栏显示确定,但是当从中选择一个项目时,我在AdapterContextMenuInfo行中得到一个NullPointerException,因为这显然是针对上下文菜单而不是操作栏.也许对于Action吧有一些相同的东西吗?或者,在这种情况下如何获取ListView项目文本?谢谢.
归档时间: |
|
查看次数: |
5761 次 |
最近记录: |