Saturday, August 3, 2013

[android-developers] the current position value is stale in viewpager getCurrentItem method

I have view pager to show the data day by day. And I set the current item position. here is coding..

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()+"");
}

});
And I have onSaveInstanceState method to store the selectedDate.
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putSerializable(DAOManager.SELECTED_DATE, selectedDate);
Log.i("onSaveInstanceState", selectedDate.toString());
}
I run the coding, I got this result.
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

And I slide for one day. I got this result.

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 

After that I rotate the screen to change orientation. The result is like this.

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 

My problem is that after the screen orientation change, the current item position is stale even I set the position in the oncreate method. I would like to know how to refresh the current item position of view pager or is it view pager bug?

Thanks. 

--
--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
---
You received this message because you are subscribed to the Google Groups "Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to android-developers+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

No comments:

Post a Comment