gpt4 book ai didi

android - 在 Listview 中使用 ViewPager 时不会调用 OnItemClickListener

转载 作者:行者123 更新时间:2023-11-29 14:49:42 24 4
gpt4 key购买 nike

我在 ListView 中有一个 ViewPager。一切正常( ListView 中的垂直滚动/ViewPager 中的水平滚动)。但是我在捕捉 listview 项目上的点击事件时遇到了问题(viewpager 填充了 listview 项目)。

到目前为止我已经尝试过了

  • 将 ListView 设置为可点击

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

  • 为我的 ListView 设置 setOnItemClickListener

问题:setOnItemClickListener 没有被调用

我还尝试将 onclick 监听器直接添加到 viewPager,但监听器也没有被调用

基本上我正在寻找一种解决方案,我可以检测到对 ListView 项目或页面查看器的点击并启动一个 Intent 。

P.S 任何关于 android 如何处理 View 上的触摸事件的链接也将受到赞赏

最佳答案

你很接近,但不是在 ViewPager 本身上设置一个 onClickListener,你必须在 View 中设置一个 onClickListener ViewPagerPagerAdapter (你必须扩展)。

在您的 ListViewgetView() 中,在您实例化 ViewPager 的地方,为您的 PagerAdapter 设置一个适配器(这里称为“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;
}

关于android - 在 Listview 中使用 ViewPager 时不会调用 OnItemClickListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22515158/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com