I didn't look too deep into your code, but after a quick overview the following catched my attention:
you are setting this in your ListPreference in your preference.xml
android:entries="@array/listArray"
android:entryValues="@array/listValues"
but in your array.xml you have 3 items in your entries string-array and just 2 items in your listValues string-array
<string-array name="listArray">
<item>10</item>
<item>20</item>
<item>30</item>
</string-array>
<string-array name="listValues">
<item>1</item>
<item>2</item>
</string-array>
You should add a third item to your listValues string-array
BTW: you should consider renaming "listArray" so that it is more clear that it holds the Entries of your list. So maybe call it "listEntries". (remember to also change reference to android:entries="@array/listEntries"
then) In general the entries are what the user actually sees, the values is what android uses. So for example your string array could look something like:
<string-array name="listEntries">
<item>one apple</item>
<item>two apples</item>
<item>three apples</item>
</string-array>
<string-array name="listValues">
<item>1</item>
<item>2</item>
<item>3</item>
</string-array>