2014-10-18 71 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