gpt4 book ai didi

java - 没有onPageSelected的Android viewpager调用setcurrentitem

转载 作者:行者123 更新时间:2023-11-30 01:41:50 26 4
gpt4 key购买 nike

我的 android 应用程序中有一个带有图像和文本的 viewPager,我的目标是创建一个可运行的,让这个 View 寻呼机自动滚动,我的另一个目标是当用户点击这个 viewpager 中的一个项目时,我需要去另一个 Activity 。

这是我的可运行对象:

        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 函数,然后打开 Activity 。那么如何防止在每 3 秒调用 setCurrentItem 时调用 onpageselected?

            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 方法不监听点击事件。

在 ViewPager 适配器的 instantiateItem 方法中,执行以下操作:

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;

关于java - 没有onPageSelected的Android viewpager调用setcurrentitem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34397661/

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