AdapterContextMenuInfo
ContextMenuの選択されたアイテム情報(idやposition)を取得するときに使用します。
ContextMenuInfoの項がそのままですが再度掲載します。
getIdとかgetPositionとしがちですが、AdapterContextMenuInfo.positionまたはidでいいです。
以下ソース例ではpositionを取得します。
ContextMenuInfoの項がそのままですが再度掲載します。
getIdとかgetPositionとしがちですが、AdapterContextMenuInfo.positionまたはidでいいです。
以下ソース例ではpositionを取得します。
ListView表示 |
ContextMenu表示 |
ContextMenu選択 |
MainActivity.java
public class MainActivity extends Activity{ static final int CONTEXT_MENU1_ID = 0;//ContextMenuアイテムid static final int CONTEXT_MENU2_ID = 1;//ContextMenuアイテムid private AdapterContextMenuInfo adapterInfo; private ListView _contextlistView; private String _listitem; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ListView _listview = (ListView) findViewById(R.id.listView1); String[] _stTest = { "テスト1", "テスト2", "テスト3"};//ListVieの表示アイテム ArrayAdapter<string> adapter = new ArrayAdapter<string>(this, android.R.layout.simple_list_item_1, _stTest); _listview.setAdapter(adapter);//アダプターセット registerForContextMenu(_listview);//ContextMenu登録 } public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo info) { super.onCreateContextMenu(menu, view, info); adapterInfo = (AdapterContextMenuInfo) info; _contextlistView = (ListView) view; _listitem = (String) _contextlistView.getItemAtPosition(adapterInfo.position);//list選択アイテム名を取得 menu.setHeaderTitle("menu");//メニュータイトル //Menu.add(int groupId, int itemId, int order, CharSequence title) menu.add(0,CONTEXT_MENU1_ID,0,"トースト表示(アイテム名)"); menu.add(0,CONTEXT_MENU2_ID,0,"トースト表示(アイテムid)"); } @Override public boolean onContextItemSelected(MenuItem item) {//ContextMenuアイテム選択イベント switch (item.getItemId()) { case CONTEXT_MENU1_ID: //選択されたアイテム名表示 Toast.makeText(this, _listitem, Toast.LENGTH_SHORT).show(); return true; case CONTEXT_MENU2_ID: //選択されたアイテムid表示 Toast.makeText(this, String.valueOf(adapterInfo.id), Toast.LENGTH_SHORT).show(); return true; default: return super.onContextItemSelected(item); } } }
res/layout/activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:android1="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical" > <TextView android1:id="@+id/textView1" android1:layout_width="wrap_content" android1:layout_height="wrap_content" android1:text="ListView" android1:textAppearance="?android:attr/textAppearanceLarge" /> <ListView android1:id="@+id/listView1" android1:layout_width="match_parent" android1:layout_height="wrap_content" > </ListView> </LinearLayout>