OnItemClickListener犯规在ListView使用ViewPager时被调用 [英] OnItemClickListener doesnt get called when using ViewPager in a Listview

查看:150
本文介绍了OnItemClickListener犯规在ListView使用ViewPager时被调用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在的ListView 有一个 ViewPager 。一切工作正常(垂直滚动列表视图/水平滚动的 ViewPager )。但我有迎头赶上的单击事件的列表视图项目(该viewpager填充ListView项)的问题。

I have a ViewPager in a ListView. Everything works fine ( vertical scroll in list view / horizontal scroll in ViewPager). But I am having problems catching on click event on the listview items (the viewpager fills the listview item).

到目前为止,我试过


  • 设置列表视图可点击

  • set the list view to clickable

延长 Viewpager 并添加检测水平滚动和套手势检测
requestDisallowInterceptTouchEvent(假)如果姿势不水平滚动

extended Viewpager and added a gesture detector which detects horizontal scroll and sets requestDisallowInterceptTouchEvent(false) if the gesture is not horizontal scroll

设置 setOnItemClickListener 我的列表视图

问题 setOnItemClickListener 不会被调用。

我也试图dirrectly添加的onclick听者的viewPager但读心人并没有叫藏汉

I was also trying to add the onclick listner dirrectly to the viewPager but the listner was not called aswell

Basicly我找的,我可以检测到的ListView项或网页浏览器点击并推出意图sollution。

Basicly I am looking for a sollution which I can detect a click on the listview item or the page viewer and launch a intent.

P.S手柄上的android如何触及事件的看法的任何链接也将是AP preciated

P.S Any links on how android handles touch events on views will be also appreciated

推荐答案

您正在接近,但而不是设置一个 onClickListener ViewPager 本身,你必须设置一个 onClickListener ViewPager 的<一个视图href=\"http://developer.android.com/reference/android/support/v4/view/PagerAdapter.html\"><$c$c>PagerAdapter (你必须扩展)。

You're close, but instead of setting an onClickListener on the ViewPager itself, you must set an onClickListener to the view in the ViewPager's PagerAdapter (which you must extend).

在你的 ListView控件的 getView(),其中实例化 ViewPager < / code>,设置一个适配器将PagerAdapter(这里所说的ExtendedPagerAdapter):

In your ListView's getView(), where you instantiate the ViewPager, set an adapter to your PagerAdapter (here called "ExtendedPagerAdapter):

ViewPager pager = (ViewPager) container.findViewById(R.id.pager);
ExtendedPagerAdapter adapter = new ExtendedPagerAdapter(context, list);
pager.setAdapter(adapter);

然后,在你ExtendedPagerAdapter类,覆盖(除其他事项外) instantiateItem(ViewGroup中,INT)

@Override
public Object instantiateItem(ViewGroup container, int position) {
    LayoutInflater inflater = (LayoutInflater)
        context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View theView = list.get(position).getView(inflater);

    theView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //perform action
        }
    });

    container.addView(theView, 0);
    return theView;
}

这篇关于OnItemClickListener犯规在ListView使用ViewPager时被调用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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