2011年01月11日

適当過ぎるぞ!プラグラマー(選択項目によってContextMenuの内容を変える)

ListViewにコンテキストメニューを適用するというのは頻繁に使いたくなるものですが、リストの項目の内容に応じてメニューの内容を変化させたかったのです。
具体的にはListViewの最上段にはリストのヒエラルキーを変えるための記号を置いて、そこではコンテキストメニューを表示させたくなかったのです。
しかし、ググっても適切な解説が見つかりませんでした。
そんな中参考にさせていただいたのは

yusukezzzの日記 様
http://yusukezzz.net/blog/archives/1897

てなことで、「ContextMenuInfoをAdapterContextMenuInfoにキャスト」という情報だけで理論的なことは何も考えずに、プラグラマーの本領発揮?により、onCreateContextMenuを以下のように記載。

    public void onCreateContextMenu(ContextMenu menu,View v,ContextMenuInfo info){
     super.onCreateContextMenu(menu,v,info);
     AdapterContextMenuInfo acmi = (AdapterContextMenuInfo)info;

     ListView list = (ListView)v;
ListData ld = (ListData)list.getItemAtPosition(acmi.position); // 以下2行はListViewをカスタマイズしているため
String selectedItem = ld.getTitle(); // 通常は(多分)コメント行のようになると思います。
     // ListView list = (ListView)v;
     // String selectItem = (String)list.getItemAtPosition(position);

if(! selectItem.equals(CHG_MARK)){
menu.add(0,ITEM_COPY,0,"コピー");
     menu.add(0,ITEM_EDIT,0,"編集");
    menu.add(0,ITEM_DEL,0,"削除");
}
    }

思った通り、動いた!
素晴らしい!
ありがとう、yusukezzz様。
しかし、やはり理論はまったく理解できていないのでした。
本当にこれでいいのか?適当過ぎるぞ!

それでもとりあえず前に進むのでした。

posted by 白虹 at 23:37| Comment(0) | TrackBack(0) | Android開発