0

ListViewがあります。アイテムがクリックされたときにContextMenuを開くためにOnItemClickListenerを実装しました。

lv = getListView();
    lv.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            showMenu(view);
        }
    });

そして、メニューを作成するためのコード。

public void onCreateContextMenu(ContextMenu menu, View v,
        ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.layout.friend_list_menu, menu);
}

public void showMenu(View v) {
    registerForContextMenu(v);
    openContextMenu(v);
}

私の問題は、ListViewの1つの項目をクリックすると、メニューが開くことです。しかし、ListViewに戻ると、そのアイテムを再度クリックすることはできません。他の項目も同様ですが、メニューを閉じた後はクリックできません。誰かがこれを手伝ってくれますか?

4

2 に答える 2

2

設定が間違っています。ボタンをクリックするのではなく、アダプタを設定するときにコンテキストメニューに登録します。

次のようになります。

setListAdapter(lists);
registerForContextMenu(getListView());

次に、あなたonCreateContextMenuonContextItemSelectedメソッドがあります(私はプログラムで私のものを作成しますが、あなたの膨らんだ1つのwoudlも同様に機能します):

@Override
public void onCreateContextMenu(ContextMenu menu, View v,
        ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    menu.setHeaderTitle("List Operations");
    menu.add(0, v.getId(), 0, "Edit List");
    menu.add(0, v.getId(), 0, "Delete List");
}

@Override
public boolean onContextItemSelected(MenuItem item) {
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item
            .getMenuInfo();
    if (item.getTitle() == "Edit List") {
      //  Do your edit stuff here
    } else if (item.getTitle() == "Delete List") {
      // Do your delete stuff here
    }
    return super.onContextItemSelected(item);
}

onItemClickアイテムを短く押すだけで何かをしたい場合を除いて、使用する必要はありません(コンテキストメニューは長押しです)。

于 2012-06-07T06:35:10.743 に答える
0

次のコードが機能します。

コード:

  ListView listview=(ListView)findViewByid(R.id.listview);

   /**** here write appending data to listview*******/
     ArrayAdapter<String> adp=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,/**your list items**/);
     listview.setadapter(adp);
     registerForContextMenu(listview);

   //listview item click listener
  listview.setOnItemClickListener(new OnItemClickListener(){

@Override
public void onItemClick(AdapterView<?> arg0, View v, int p, long arg3) {
    // TODO Auto-generated method stub

 Toast.makeText(getApplicationContext(), "selected" + p, 30).show();
}});

   /****do your context menu code here*******/
于 2012-06-07T06:39:16.177 に答える