[英]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.