Android ListView ContextMenu

男儿欲遂平生志,五经勤向窗前读。这篇文章主要讲述Android ListView ContextMenu相关的知识,希望能为你提供帮助。
【Android ListView ContextMenu】我正在尝试创建一个ContextMenu当用户点击我的ListView中的项目。但是当我按住我的项目时,我的代码没有显示任何内容。有人请检查我的代码。谢谢。

public class MyD extends SherlockListFragment implements ActionBar.TabListener {private File file; private List< String> myList; private Fragment mFragment; private ListView DLListView; private ArrayAdapter< String> listAdapter; @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); getActivity().setContentView(R.layout.dl_listview); View empty = getActivity().findViewById(R.id.empty); DLListView = (ListView) getActivity().findViewById(R.id.DLListView); DLListView.setEmptyView(empty); if (!Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { Toast.makeText(getActivity(), "Error! No SDCARD Found!", Toast.LENGTH_LONG).show(); } else { File directory = new File(Environment.getExternalStorageDirectory() + File.separator + "St"); directory.mkdirs(); } DLListView = (ListView) getActivity().findViewById(R.id.DLListView); myList = new ArrayList< String> (); File sdCard = Environment.getExternalStorageDirectory(); file = new File(sdCard.getAbsolutePath() + "/St/"); File list[] = file.listFiles(); for (int i = 0; i < list.length; i++) { String fileName = list[i].getName(); fileName = fileName.replace(".txt", ""); myList.add(fileName); }listAdapter = new ArrayAdapter< String> (getActivity(), R.layout.simplerow, myList); DLListView.setAdapter(listAdapter); DLListView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView< ?> parent, View view, int position, long id) { // TODO Auto-generated method stub String textToPass = myList.get(position); Intent i = new Intent(getActivity(), ViewActivity.class); textToPass = textToPass.replace(textToPass + "", textToPass + ".txt"); i.putExtra("textToPass", textToPass); startActivity(i); } }); DLListView.setOnItemLongClickListener(new OnItemLongClickListener() {@Override public boolean onItemLongClick(AdapterView< ?> parent, View view, int position, long id) { // TODO Auto-generated method stub return false; } }); }public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo; String name = ((TextView) info.targetView).getText().toString(); menu.setHeaderTitle(name); menu.add(0,v.getId(), 0, "Play"); menu.add(0,v.getId(),1,"Delete"); }

答案试试这个:
DLListView.setOnItemLongClickListener(new OnItemLongClickListener() {@Override public boolean onItemLongClick(AdapterView< ?> parent, View view, int position, long id) { // TODO Auto-generated method stubregisterForContextMenu( view ); openContextMenu( view ); return false; } });

如果你想关闭,即使你可以使用closeContextMenu()。希望这可以帮助。
另一答案如果你的意思是longClick,你就缺少OnItemLongClickListener()
并且,要调用上下文菜单,请检查:how to call context menu
另一答案您必须注册ViewGroup(DLListView)才能识别菜单中的组件。
DLListView = (ListView) getActivity().findViewById(R.id.DLListView); registerForContextMenu(DLListView);

使用这些更改不需要注册ListView组件中的每个元素。

    推荐阅读