在Listview中使用ViewPager时,不会调用OnItemClickListener

pul*_*rao 1 android android-layout android-listview android-fragments android-viewpager

我有ViewPager一个ListView.一切正常(列表视图中的垂直滚动/水平滚动ViewPager).但我在列表视图项上捕获click事件时遇到问题(viewpager填充listview项).

到目前为止我试过了

  • 将列表视图设置为可单击

  • 扩展Viewpager并添加了一个手势检测器,它检测水平滚动并设置 requestDisallowInterceptTouchEvent(false)手势是否不是水平滚动

  • 设置setOnItemClickListener为我的列表视图

问题:setOnItemClickListener 没有被调用

我也试图将onclick listner直接添加到viewPager但是listner没有被调用aswell

基本上我正在寻找一种溶剂,我可以检测到listview项目或页面查看器上的点击并启动意图.

PS关于android如何处理视图上的触摸事件的任何链接也将受到赞赏

San*_*ers 6

你接近,但不是设置一个onClickListenerViewPager自己,你必须设定onClickListener在视图ViewPagerPagerAdapter(你必须扩展).

在你ListViewgetView()实例化的地方ViewPager,设置一个适配器到你的PagerAdapter(这里称为"ExtendedPagerAdapter"):

ViewPager pager = (ViewPager) container.findViewById(R.id.pager);
ExtendedPagerAdapter adapter = new ExtendedPagerAdapter(context, list);
pager.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)

然后,在您的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;
}
Run Code Online (Sandbox Code Playgroud)