長いクリック選択で 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...
});
Contextual Action Bar は問題なく表示されますが、そこからアイテムを選択すると、AdapterContextMenuInfo 行で NullPointerException が発生します。これは、明らかにアクション バーではなくコンテキスト メニュー用に作成されたものだからです。おそらくアクションバーにこれに相当するものはありますか? または、この場合、ListView アイテムのテキストを取得するにはどうすればよいですか? ありがとう。