2014年1月14日

AdapterContextMenuInfoとは

AdapterContextMenuInfo

ContextMenuの選択されたアイテム情報(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>

0 件のコメント:

コメントを投稿