2014-10-18 70 views
0

我在ListView上使用ContextMenu。我面臨的問題是我沒有獲取已在ListView中選擇的項目上的ContextMenu,因爲它根本不可觸摸。ListView上下文菜單

回答

0

解決! 我做的是"android:focusable="false"我的ListView項目中的所有按鈕,他們竊取焦點使選定的列表項不可觸摸。 參考:click-events-listview-gridview

0

調用這裏面onCreate():

registerForContextMenu(lv); 

而且長按期間訪問所選項目:

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { 
if (v.getId() == R.id.lv) { 
    ListView lv = (ListView) v; 
    AdapterView.AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) menuInfo; 
    YourObject obj = (YourObject) lv.getItemAtPosition(acmi.position); 

    menu.add("One"); 
    menu.add("Two"); 
    menu.add("Three"); 
    menu.add(obj.name); 
} 
} 
+0

我已經這樣做了,我得到的ContextMenu但問題是,假設我已經下列項目列表詮釋: 奶酪 奶酪乙 奶酪ç 當點擊奶酪,我長按B和C可獲得ContextMenu,但在長時間按下奶酪A時不會獲得。 – 2014-10-18 08:32:56

+0

show your adapter for listview – goonerDroid 2014-10-18 08:37:57

+0

'listViewConversations =(ListView)view.findViewById(R.id.listViewConversationList); \t \t conversationListAdaptor = new ConversationListAdaptor(getActivity()); \t \t listViewConversations.setAdapter(conversationListAdaptor); \t \t listViewConversations.setTranscriptMode(ListView.TRANSCRIPT_MODE_NORMAL); \t \t listViewConversations.setOnItemClickListener(this); \t \t registerForContextMenu(listViewConversations);' 這是一個自定義適配器。 – 2014-10-18 08:42:02