package com.ideabag.playtunes.fragment; import android.os.Bundle; import android.support.v4.app.ListFragment; import android.view.View; public class SaveScrollListFragment extends ListFragment { private static final String KEY_POSTION = "position_y"; private static final String KEY_OFFSET = "offset_y"; protected int mSavedScrollOffset = 0; protected int mSavedScrollListPosition = 0; @Override public void onSaveInstanceState( Bundle outState ) { super.onSaveInstanceState( outState ); outState.putInt( KEY_POSTION, mSavedScrollListPosition ); outState.putInt( KEY_OFFSET, mSavedScrollOffset ); } @Override public void onActivityCreated( Bundle inState ) { super.onActivityCreated( inState ); if ( inState != null ) { mSavedScrollListPosition = inState.getInt( KEY_POSTION ); mSavedScrollOffset = inState.getInt( KEY_OFFSET ); } setRetainInstance( true ); } protected void restoreScrollPosition() { try { getListView().setSelectionFromTop( mSavedScrollListPosition, mSavedScrollOffset ); } catch( Exception e ) { // Out of bounds e.printStackTrace(); } } protected void saveScrollPosition() { try { if ( null != getListView() ) { mSavedScrollListPosition = getListView().getFirstVisiblePosition(); View v = getListView().getChildAt( 0 ); mSavedScrollOffset = (v == null ? 0 : v.getTop() ); } } catch( Exception e ) { } } @Override public void onPause() { super.onPause(); saveScrollPosition(); } }