LONGクリックでトリガーされたコンテキストメニューを実装しますか、組み込みレイアウトとListAdapterを使用しているListActivityをタップしますか?
LONGクリックでトリガーされたコンテキストメニューを実装しますか、組み込みレイアウトとListAdapterを使用しているListActivityをタップしますか?
How do you implement a context menu triggered by a long click or tap on a ListActivity that is using the built in layouts and a ListAdapter?
</divoncreateメソッド呼び出し onCreateContextMenu(ContextMenuメニュー、ビュービュー、ContextMenuInfo menuinfo)。 menuinfo引数は、この方法でどのアイテムがロングクリックされたかに関する情報を提供できます。
<事前> <コード> AdapterView.AdapterContextMenuInfo info; try { info = (AdapterView.AdapterContextMenuInfo) menuInfo; } catch (ClassCastException e) { Log.e(TAG, "bad menuInfo", e); return; } long id = getListAdapter().getItemId(info.position);とあなたは通常の方法でメニュー項目を追加します menu.add :
<事前> <コード> menu.add(0, MENU_ITEM_ID, 0, R.string.menu_string);およびユーザがオプションを選択した場合、 OnContextItemSelected が呼び出されます。 onmenuitemSelected andこの事実は、コンテキストメニューから呼び出しを受信するために他のメソッドを使用することを除いて、ドキュメントで明示的に説明されていません。注意してください、IDを共有しないでください。
OnContextItemSelecteされているメニューインファー、したがって、 getMenuInfo():
<事前> <コード> try { info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); } catch (ClassCastException e) { Log.e(TAG, "bad menuInfo", e); return false; } long id = getListAdapter().getItemId(info.position);On the onCreate method call registerForContextMenu like this:
registerForContextMenu(getListView());
and then populate the menu on onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo). The menuInfo argument can provide information about which item was long-clicked in this way:
AdapterView.AdapterContextMenuInfo info; try { info = (AdapterView.AdapterContextMenuInfo) menuInfo; } catch (ClassCastException e) { Log.e(TAG, "bad menuInfo", e); return; } long id = getListAdapter().getItemId(info.position);
and you add menu items in the usual way calling menu.add:
menu.add(0, MENU_ITEM_ID, 0, R.string.menu_string);
and when the user picks an option, onContextItemSelected is called. Also onMenuItemSelected and this fact is not explicitly explained in the documentation except to say that you use the other method to receive the calls from the context menu; just be aware, don't share ids.
On onContextItemSelected you can get ahold of the MenuInfo and thus the id of the item selected by calling getMenuInfo():
try { info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); } catch (ClassCastException e) { Log.e(TAG, "bad menuInfo", e); return false; } long id = getListAdapter().getItemId(info.position);
</divActivity.RegisterForContextMenu(ビュー)
You should also look at Activity.registerForContextMenu(View).
</divlistView = (ListView) findViewById(R.id.listpockets); registerForContextMenu(listView); public void onCreateContextMenu(android.view.ContextMenu menu, View v, android.view.ContextMenu.ContextMenuInfo menuInfo) { //AdapterContextMenuInfo info = (AdapterContextMenuInfo)menuInfo; menu.setHeaderTitle(getString(R.string.titleDelete)); menu.add(0, CommonUtil.CONTEXT_MENU__DELETE_ID, 0, getString(R.string.menuDelete)); }; @Override public boolean onContextItemSelected(MenuItem item) { if(item.getItemId() == CommonUtil.CONTEXT_MENU__DELETE_ID) { AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); long id = this.listView.getItemIdAtPosition(info.position); Log.d(TAG, "Item ID at POSITION:"+id); } else { return false; } return true; }
</div© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有