OnItemClickListener犯规在ListView使用ViewPager时被调用 [英] OnItemClickListener doesnt get called when using ViewPager in a Listview
问题描述
我在的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$c$c> (你必须扩展)。
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屋!