2013-11-27 67 views
0

下午好。在代码中更改ViewPager页面

我需要在按钮单击事件后自动滑过ViewPager中的所有页面。 但我只看到敬酒如何改变。

MyAdapter mAdapter = new MyAdapter(fm); 
MyViewPager mPager = (MyViewPager) v.findViewById(R.id.pager); 
mPager.setPagingEnabled(true); 
mPager.setAdapter(mAdapter); 

    mPager.setAdapter(mAdapter);  
((Button) v.findViewById(R.id.calendar)) 
      .setOnClickListener(new View.OnClickListener() { 
       public void onClick(View v) { 

        mPager.setCurrentItem(0); 
        Toast.makeText(v.getContext(), "Page1", Toast.LENGTH_LONG).show(); 
        mPager.setCurrentItem(1); 
        Toast.makeText(v.getContext(), "Page2", Toast.LENGTH_LONG).show(); 
        mPager.setCurrentItem(2); 
        Toast.makeText(v.getContext(), "Page3", Toast.LENGTH_LONG).show(); 
        mPager.setCurrentItem(3); 
        mPager. 
        Toast.makeText(v.getContext(), "Page0", Toast.LENGTH_LONG).show(); 
        mPager.setCurrentItem(0); 

       } 
      }); 

回答

0

您可以使用Timer来达到此目的。以下代码不言自明:

Timer timer; 
int page = 1; 

((Button) v.findViewById(R.id.calendar)) 
     .setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
      pageSwitcher(3); 
} 

public void pageSwitcher(int seconds) { 
     timer = new Timer(); // At this line a new Thread will be created 
     timer.scheduleAtFixedRate(new RemindTask(), 0, seconds * 1000); // delay 
                   // in 
// milliseconds 
} 

// this is an inner class... 
class RemindTask extends TimerTask { 

@Override 
public void run() { 

    // As the TimerTask run on a seprate thread from UI thread we have 
    // to call runOnUiThread to do work on UI thread. 
    runOnUiThread(new Runnable() { 
     public void run() { 

      if (page > 4) { // In my case the number of pages are 5 
       timer.cancel(); 
       // Showing a toast for just testing purpose 
       Toast.makeText(getApplicationContext(), "Timer stoped", 
         Toast.LENGTH_LONG).show(); 
      } else { 
       mViewPager.setCurrentItem(page++); 
      } 
     } 
    }); 

} 
} 
相关问题