Your list is reloading because the activity is destroyed and re-created when the orientation changes. The simplest thing is to manually handle orientation changes in the activity - and do nothing about it. Also, you can specify the portrait or landscape for an activity in the Manifest. Your manifest would then contain something like this:
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:allowBackup="true"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:screenOrientation="sensorPortait"
android:configChanges="keyboardHidden|orientation"
android:theme="@android:style/Theme.NoTitleBar" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".PreviewActivity"
android:screenOrientation="sensorLandscape"
android:label="@string/app_name"
android:configChanges="keyboardHidden|orientation"
android:theme="@android:style/Theme.Dialog"
android:excludeFromRecents="true" >
</activity>
...
</application>
Note the lines android:configChanges
in the declaration of each activity. Also note the lines android:screenOrientation
- with these lines added you don't need to call setRequestedOrientation
in the code.