Мне нужно получить доступ к тексту в элементе 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);
}
}
Однако для более новых версий 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...
});
Контекстная панель действий отображается нормально, но при выборе элемента из нее я получаю исключение NullPointerException в строке AdapterContextMenuInfo, поскольку это было очевидно сделано для контекстных меню, а не для панелей действий.Может быть, есть какой-то эквивалент для панелей действий?Или как я могу получить текст элемента ListView в этом случае?Спасибо.