繁体   English   中英

Android ViewPager调用setcurrentitem而不使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM