当前位置: 首页 > 知识库问答 >
问题:

在viewpager中显示listview项的上下文菜单

孔鸿宝
2023-03-14

你好,我有一个带有slidingtab的活动,一个viewpager,在viewpager中,我以编程方式添加了Listviews

myVp = (android.support.v4.view.ViewPager) findViewById(R.id.mainviewpager);
        myVp.setClickable(false);
        pages = new Vector<View>();
        int i = 0;
        for (LinkedList<Channel> cEvent : pagine) {
            final ListView mList = new ListView(this);
            mList.setDividerHeight(5);
            pages.add(i, mList);
            i++;
        }
        CustomMainPagerAdapter adapter = new CustomMainPagerAdapter(this, pages, mGruppi);
        myVp.setPageTransformer(true, new ZoomOutPageTransformer());
        myVp.setAdapter(adapter);
        int j = 0;
        for (LinkedList<Channel> cEvent : pagine) {
            CustomAdapter mCadapter = new CustomAdapter(this, R.layout.line_item, cEvent);
            final ListView mV = (ListView) pages.get(j);
            mV.setAdapter(mCadapter);
            registerForContextMenu(mV);
            mV.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long arg3) {
                    if (showMenu) {
                        mV.showContextMenuForChild(view);
                    } else {
                        Channel cPlay = (Channel) mV.getItemAtPosition(position);
                        String file = cPlay.getmLink();
                        if (!file.equalsIgnoreCase("NONE")) {
                            sendLink(file);
                        }
                }
            });
            j++;
        }
        adapter.notifyDataSetChanged();
        mSlidingTabLayout.setDistributeEvenly(true);
        mSlidingTabLayout.setViewPager(myVp);

问题是,如果showMenu为true,则上下文菜单不会显示,但如果showMenu为false,则其他函数工作。因此“OnItemClickListener”似乎没有问题,因为它被正确调用了,但问题是“ShowContextMenuForChild”。

我做错了什么或者错过了什么?

共有1个答案

樊飞飙
2023-03-14

拿到了!我将mainactivity从一个listview更改为一个包含更多listview的viewpager,并检查了我看到的代码,在“OnCreateContextMenu”上,我做了一个过滤器来检查list视图是否是主视图,因此删除了“if”构造函数,现在一切都正常工作了!在那之前

if (v.getId() == R.id.mylist) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu_channel, menu);
}

这就是为什么没有创建新的listview上下文菜单的原因!

谢谢你

 类似资料:
  • 我有一个网格视图。单击gridview中的任何项时,我将转到一个ViewPager/FragmentStatePagerAdapter中,该ViewPager/FragmentStatePagerAdapter包含gridview的所有项。我希望视图页导航显示选定的项目。Viewpager总是加载第一个项目。如何解决这个问题? 活动: 我正在从gridview接收BuyActivity Inten

  • 我一直试图在Android Studio的底部应用程序栏中添加菜单项的标题和菜单图标。我试图设置: 但是它不起作用。只有图标显示出来。我还尝试制作自己的布局文件并使用actionLayout: 这也没用。 我想要的示例(图标下方有文本): 现在的样子: 我的活动的XML: 和我菜单的代码: 我试图创建自己的动作布局的代码(如果相关):

  • 问题内容: 我已经尝试了一切。我认为他们犯了一个大错误,就是在任何情况下都未引用索引单元格。 我可以得到菜单,但位置不正确。右键单击即可。 在我的TreeView中,我可以使用get KeyReleased,但是我不知道将菜单放在哪里。 没有一种布局方法会给我TreeCell的坐标 问题答案: 根本不可能为给定项目提供对单元格的API访问。并非每个项目都有与之关联的单元格。最重要的是,由单元格表示

  • 我一直在制作一个可以在Android中使用ListView的应用程序,但我无法使所选(chacked)项具有不同的背景。我用的是CHOICE_MODE_SINGLE。到目前为止,我的代码是这样的: 我使用的列表视图: (inside layout.xml) 我在适配器中使用的TextView布局: (listItem.xml) 这是我添加适配器的地方: 我确信在单击时选中了正确的项,因为当我调用g

  • 我在上下文菜单中使用右键单击功能时遇到问题。我的菜单项没有显示,因为我的第二个ngFor=“let row”条件。。。但我需要右键单击选中的行对象,以便从该行传入json值。 现在模式正在弹出,但没有显示菜单项按钮,因此我无法使用click事件。 我做错了什么? view.component.html view.component.ts

  • 我正在使用Android Studio v3。1.2. 我有一对带有列表视图和按钮的活动。无论ListView中有多少项,按钮都应对齐底部。 在我的主活动中,ListView和按钮在RelativeLayout上完美渲染。我可以添加很多项目到ListView和按钮保持不变。 另一方面,我的JournalAbFragment是一个在表格布局中使用RelativeLayout的片段。该片段由PetDe