Android的ListView控件的ContextMenu控件、Android、ListView、ContextMenu

2023-09-06 11:23:36 作者:我很好真的很好

我想在我的的ListView 上一个项目创建一个文本菜单当用户敲击举行。然而,当我在我的项目挖掘握住我的code不显示任何东西。可能有人请检查我的code。谢谢你。

 公共类MYD扩展SherlockListFragment工具        ActionBar.TabListener {    私人档案文件;    私人列表<串GT; myList中;    私人片段mFragment;    私人的ListView DLListView;    私人ArrayAdapter<串GT; listAdapter;    @覆盖    公共无效onActivityCreated(捆绑savedInstanceState){        super.onActivityCreated(savedInstanceState);        getActivity()的setContentView(R.layout.dl_listview)。        查看空= getActivity()findViewById(R.id.empty)。        DLListView =(ListView控件)getActivity()findViewById(R.id.DLListView)。        DLListView.setEmptyView(空);        如果(!Environment.getExternalStorageState()。等于(                Environment.MEDIA_MOUNTED)){            Toast.makeText(getActivity(),                    错误!未找到SD卡!                    Toast.LENGTH_LONG).show();        }其他{            文件目录=新的文件(Environment.getExternalStorageDirectory()                    +文件分割符+ST);            directory.mkdirs();        }        DLListView =(ListView控件)getActivity()findViewById(R.id.DLListView)。        myList中=新的ArrayList<串GT;();        文件SD卡= Environment.getExternalStorageDirectory();        文件=新的文件(sdCard.getAbsolutePath()+/圣/);        文件列表[] = file.listFiles();        的for(int i = 0; I< List.length的数字,我++){            字符串文件名=列表[我] .getName();            文件名= fileName.replace(,名为txt);            myList.add(文件名);        }        listAdapter =新ArrayAdapter<串GT;(getActivity()                R.layout.simplerow,myList中);        DLListView.setAdapter(listAdapter);        DLListView.setOnItemClickListener(新OnItemClickListener(){            @覆盖            公共无效onItemClick(适配器视图<>母公司,观景,                    INT位置,长的id){                // TODO自动生成方法存根                字符串textToPass = myList.get(位置);                意图I =新意图(getActivity(),ViewActivity.class);                textToPass = textToPass.replace(textToPass +,textToPass                        +符.txt);                i.putExtra(textToPass,textToPass);                startActivity(ⅰ);            }        });    DLListView.setOnItemLongClickListener(新OnItemLongClickListener(){    @覆盖    公共布尔onItemLongClick(适配器视图<>母公司,观景,            INT位置,长的id){        // TODO自动生成方法存根        返回false;    }});}    公共无效onCreateContextMenu(文本菜单菜单视图V,ContextMenuInfo menuInfo)    {       super.onCreateContextMenu(菜单,V,menuInfo);       AdapterContextMenuInfo信息=(AdapterContextMenuInfo)menuInfo;       字符串名称=((的TextView)info.targetView).getText()的toString()。       menu.setHeaderTitle(名);       menu.add(0,v.getId(),0,播放);       menu.add(0,v.getId(),1,删除);    } 

解决方案

试试这个:

  DLListView.setOnItemLongClickListener(新OnItemLongClickListener(){    @覆盖    公共布尔onItemLongClick(适配器视图<>母公司,观景,            INT位置,长的id){        // TODO自动生成方法存根          registerForContextMenu(视图);          openContextMenu(视图);        返回false;    }}); 

甚至可以使用 closeContextMenu()如果您要关闭。希望这可以帮助。

在ContextMenu中平添 删除ListView的Item

I'm trying to create a ContextMenu when user tap hold on an item in my ListView. However my code doesn't show anything when I tap hold on my item. Could somebody please check on my code. Thank you.

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"); 
    }

解决方案

Try this:

DLListView.setOnItemLongClickListener(new OnItemLongClickListener() {

    @Override
    public boolean onItemLongClick(AdapterView<?> parent, View view,
            int position, long id) {
        // TODO Auto-generated method stub

          registerForContextMenu( view );
          openContextMenu( view );        

        return false;
    }
});

Even you can use closeContextMenu() if you want to close. Hope this helps.