I fixed this with another approach from another example (picked idea) forgot the link to that solution but will update it once i found it.
public class FontSizePreference extends ListPreference {
private Context mContext;
private CharSequence[] entries = null;
private CharSequence[] entryValues = null;
private SharedPreferences prefs;
private SharedPreferences.Editor editor;
private static final String TAG = FontSizePreference.class.getSimpleName();
private String font_size = "";
public FontSizePreference(Context context, AttributeSet attrs) {
super(context, attrs);
mContext = context;
prefs = PreferenceManager.getDefaultSharedPreferences(mContext);
editor = prefs.edit();
entries = getEntries();
entryValues = getEntryValues();
}
@Override
protected Object onGetDefaultValue(TypedArray a, int index) {
return super.onGetDefaultValue(a, 2);
}
@Override
protected void onPrepareDialogBuilder(Builder builder) {
String choosenIndex = getPersistedString("18");
choosenIndex = (!getValue().equals(choosenIndex)) ? choosenIndex : getValue();
ListAdapter adapter = new FontSizeListAdapter(getContext(),
R.layout.fontsize_layout, entries, entryValues,
Arrays.asList(entryValues).indexOf(choosenIndex) ,this);
builder.setAdapter(adapter, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
}
});
super.onPrepareDialogBuilder(builder);
}
class CustomListAdapter implements ListAdapter {
private int selectedIndex = 0;
public CustomListAdapter(Context context, int customFontLayout,
CharSequence[] entries, CharSequence[] entryValues,
int selectedValue) {
this.selectedIndex = selectedValue;
}
@Override
public int getCount() {
return entries.length;
}
@Override
public Object getItem(int index) {
return entryValues[index];
}
@Override
public long getItemId(int index) {
return index;
}
@Override
public int getItemViewType(int index) {
return index;
}
@Override
public View getView(final int index, View anotherView, ViewGroup parent) {
View row = anotherView;
if (row == null) {
row = LayoutInflater.from(getContext()).inflate(
R.layout.fontsize_layout, parent, false);
}
TextView txtView = (TextView) row.findViewById(R.id.fontSizeTitle);
RadioButton buttonView = (RadioButton) row
.findViewById(R.id.fontSizeState);
row.setId(Integer.valueOf(entryValues[index].toString()));
txtView.setText(entries[index]);
if (index == selectedIndex) {
buttonView.setChecked(true);
}
txtView.setTextSize(Float.valueOf((String) entryValues[index]));
row.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
persistString(String.valueOf(v.getId()));
getDialog().dismiss();
}
});
buttonView.setOnCheckedChangeListener(
new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (isChecked) {
buttonView.setId(index);
persistString(
String.valueOf(entryValues[buttonView.getId()]));
getDialog().dismiss();
}
}
});
return row;
}
@Override
public int getViewTypeCount() {
// TODO Auto-generated method stub
return entryValues.length;
}
@Override
public boolean hasStableIds() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isEmpty() {
// TODO Auto-generated method stub
return false;
}
@Override
public void registerDataSetObserver(DataSetObserver arg0) {
// TODO Auto-generated method stub
}
@Override
public void unregisterDataSetObserver(DataSetObserver arg0) {
// TODO Auto-generated method stub
}
@Override
public boolean areAllItemsEnabled() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isEnabled(int arg0) {
// TODO Auto-generated method stub
return false;
}
}
@Override
protected String getPersistedString(String defaultReturnValue) {
return super.getPersistedString(defaultReturnValue);
}
@Override
protected void onSetInitialValue(boolean restoreValue, Object defaultValue) {
if (!restoreValue) {
super.onSetInitialValue(restoreValue,"18");
} else
super.onSetInitialValue(restoreValue, defaultValue);
}
public boolean persistString (String value) {
return super.persistString(value);
}
}