簡體   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