0

CustomListAdapter があります。OnItemClickListener をオーバーロードし、コンテキスト メニューを表示する位置に registerForContextMenu 行を追加しました。

MenuItem を表示する項目を選択すると、メニューが表示されます。電話の戻るボタンを押すと、メニューが消えます。ただし、リストビュー内の同じアイテムが OnItemClickListener を受信しなくなった場合はどうなりますか。私は理にかなっていますか?つまり、メニューが消えた後、同じアイテムはクリック リスナーを受け取りません。上下の項目は、必要に応じてイベントを受け取ります。メニューが消えたように見えますが、まだクリックイベントをキャッチしていますか?

4

2 に答える 2

1

これは悪いです。メソッドを呼び出す必要がありますregisterForContextMenuonCreate

したがって、次のようにしてみてください。

@Override
public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.contacts);
   registerForContextMenu(<yourListView>);
   ...
}

作成するには、メソッドContextMenuをオーバーライドする必要がありますonCreateContextMenu

@Override
public void onCreateContextMenu(ContextMenu cMenu, View parent, ContextMenu.ContextMenuInfo info) {
   this.contextMenu = cMenu;
   new MenuInflater(Contacts.this).inflate(R.menu.conmenu, this.contextMenu);
}

および選択項目のオーバーライドonContextItemSelected方法の場合:

@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)       item.getMenuInfo();
   switch (item.getItemId()) {
      case R.id.c_odobrat:
         deleteContactDialog(info.id);
         return true;
   }
   return false;
}

そして、それはうまくいくはずです。

于 2012-05-30T20:02:11.250 に答える
0
        quickLinkListView.setOnItemClickListener(new OnItemClickListener()
        {
            @Override
            public void onItemClick(AdapterView<?> a, View v, int position, long id)
            {

                Intent intent = new Intent();
                intent.setClassName(Home.this, "com.myapp.toc" + Constants.ACT_NAMES[position]);

                if (position < 4 && position > 1)
                {

                    switch (position)
                    {

                    case 3:
                        registerForContextMenu(v);
                        ViewHolder.v=v;
                        openContextMenu(v);
                        break;
                    }
                }

            }
        });

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)
{
    super.onCreateContextMenu(menu, v, menuInfo);

    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.context_home, menu);
    menu.setHeaderTitle("Select Video Type");
}
于 2012-05-30T19:58:03.947 に答える