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

时间:2015-12-01 07:53:42

标签: android listview android-viewpager contextmenu

你好,我有一个带有slidetab的活动,一个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”。

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

谢谢

2 个答案:

答案 0 :(得分:0)

知道了! 我将mainactivity从单个列表视图更改为具有更多listview的viewpager并检查我在“onCreateContextMenu”上看到的代码我做了一个过滤器来检查列表视图是否是主要的,所以删除“if”构造函数现在一切都是工作正常! 之前

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

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

谢谢

答案 1 :(得分:0)

解决了这一个:-) 在我的代码上:

if (showMenu) {
                    mV.showContextMenuForChild(view);
                } else {
                    Channel cPlay = (Channel) mV.getItemAtPosition(position);
                    String file = cPlay.getmLink();
                    if (!file.equalsIgnoreCase("NONE")) {
                        sendLink(file);
                    }

我补充说:

myList = mList; 

其中myList是一个全局ListView所以每隔一个项目被点击我将它设置为当前的lisview点击,我想要我需要&#34; onContextItemSelected&#34; 通过做

AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
selectpos = info.position; // position in the adapter
                Channel mChannel = (Channel) myList.getItemAtPosition(selectpos);

: - )