Android的ListView控件的ContextMenu [英] Android ListView ContextMenu

查看:248
本文介绍了Android的ListView控件的ContextMenu的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在我的的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()如果您要关闭。希望这可以帮助。

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.

这篇关于Android的ListView控件的ContextMenu的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆