[英]Viewpager setCurrentItem() doesn't update onPageSelected()
[英]Android viewpager call setcurrentitem without onPageSelected
我的Android应用程序中有一个包含图像和文本的viewPager,我的目标是创建一个可运行的文件,以使该视图分页器自动滚动,而我的另一个目标是当用户单击此viewpager中的一个项目时,我需要转到另一项活动。
这是我可运行的:
final Handler handler = new Handler();
final Runnable Update = new Runnable() {
public void run() {
if (currentPage == NUM_PAGES - 1) {
currentPage = -1;
}
pager.setCurrentItem(currentPage++,true);
pager.setScrollBarFadeDuration(R.styleable.CirclePageIndicator_fillColor);
pager.setScrollDurationFactor(4);
mIndicator.setCurrentItem(currentPage++);
}
};
swipeTimer = new Timer();
swipeTimer.schedule(new TimerTask() {
@Override
public void run() {
handler.post(Update);
}
}, 1000, 3000);
问题在于,每次可运行调用“ SetCurrentItem()”时,都会调用onpageselected函数,然后打开活动。 那么如何防止每3秒调用setCurrentItem时调用onpageselect?
pager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
// TODO Auto-generated method stub
Picture current = (Picture)pageAdapter.getItem(arg0);
Article a = getArticleById(current.getArticleId(), p);
Bundle bundle=new Bundle();
Intent intent = new Intent();
intent.setClass(HomePageActivity.this,DetailActivity.class);
//.getString(tag)));
bundle.putParcelable("article", a);
bundle.putParcelableArrayList("pic", a.getPic());
intent.putExtras(bundle);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
currentPage=arg0;
//mIndicator.setCurrentItem(arg0);
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
});
您应该在适配器内部的ViewPager项目中添加一个点击侦听器。 onPageSelected
方法不监听点击事件。
在instantiateItem
您ViewPager适配器的方法,这样做:
LayoutInflater inflater = (LayoutInflater) collection.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rootView = inflater.inflate(R.layout.your_layout, null);
rootView.setOnClickListener(new OnClickListener(){
public void onClick(View v){
//do the click thing
}
});
container.addView(rootView);
return rootView;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.