2013-08-02 75 views
1

我有查看尋呼機來顯示數據日復一日。我設置了當前的項目位置。這裏編碼..當前位置值在viewpager getCurrentItem方法中陳舊

viewPager = (ViewPager) findViewById(R.id.pager); 
    pagerAdapter = new DashboardViewAdapter(getSupportFragmentManager(), selectedDate); 

    daoManager = OpenHelperManager.getHelper(this, DAOManager.class); 

    viewPager.setAdapter(pagerAdapter); 

    Date d = pagerAdapter.getDate(365); 
    Log.i("pageAdapter", d.toString()); 

    viewPager.setCurrentItem(365); 
    Log.i("viewAdapter", viewPager.getCurrentItem()+""); 

    viewPager.setOnPageChangeListener(new OnPageChangeListener(){ 

     public void onPageScrollStateChanged(int arg) { 

     } 

     public void onPageScrolled(int arg0, float arg1, int arg2) { 
      // TODO Auto-generated method stub 

     } 

     public void onPageSelected(int position) { 
      Date d = pagerAdapter.getDate(viewPager.getCurrentItem()); 
      monthTitleTextView.setText(formatter.format(d)); 
      selectedDate = d; 
      Log.i("onPageSelected", selectedDate.toString()); 
      Log.i("onPageSelected", viewPager.getCurrentItem()+""); 
     } 

    }); 

而且我onSaveInstanceState方法來存儲selectedDate

@Override 
protected void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    outState.putSerializable(DAOManager.SELECTED_DATE, selectedDate); 
    Log.i("onSaveInstanceState", selectedDate.toString()); 
} 

我運行編碼,我得到了這個結果。

08-02 13:03:17.868: I/pageAdapter(16770): Fri Aug 02 00:00:00 
GMT+06:30 2013 08-02 13:03:17.868: I/viewAdapter(16770): 365 

我滑了一天。我得到了這個結果。

08-02 13:07:17.278: I/onPageSelected(16770): Sat Aug 03 00:00:00 
GMT+06:30 2013 08-02 13:07:17.278: I/onPageSelected(16770): 366 

之後,我旋轉屏幕來改變方向。結果就是這樣。

08-02 13:10:27.558: I/onSaveInstanceState(16770): Sat Aug 03 00:00:00 GMT+06:30 2013 
08-02 13:10:27.748: I/dateList (16770): 731 from Fri Aug 03 00:00:00 GMT+06:30 2012-- to Sun Aug 03 00:00:00 GMT+06:30 2014 
08-02 13:10:27.748: I/pageAdapter(16770): Sat Aug 03 00:00:00 GMT+06:30 2013 
08-02 13:10:27.748: I/viewAdapter(16770): 365 
08-02 13:10:27.888: I/onPageSelected(16770): Sun Aug 04 00:00:00 GMT+06:30 2013 
08-02 13:10:27.888: I/onPageSelected(16770): 366 

我的問題是屏幕的方向變化後,當前項目的位置是陳舊的,甚至我設置在oncreate方法的位置。我想知道如何刷新視圖尋呼機的當前項目位置。

謝謝。

+0

有什麼辦法不將屏幕方向是改變後調用'onPageSelected'? – user1156041

+0

請任何人幫我!!!!!! – user1156041

回答

0

試試這個,它可以幫助你

mIndicator.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
      @Override 
      public void onPageSelected(int position) { 
       Toast.makeText(SampleCirclesWithListener.this, "Changed to page " + position, Toast.LENGTH_SHORT).show(); 
      } 

      @Override 
      public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 
      } 

      @Override 
      public void onPageScrollStateChanged(int state) { 
      } 
     }); 
+0

是的,我試過了,但是位置是'366'。它應該是'365'。 'getCurrentItem()'方法和'position'返回相同的值。 – user1156041