Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- AndroidのPreferenceActivityのsummaryを自動的に更新するListPreference
- */
- public class MyListPreference extends ListPreference {
- TreeMap<String,String> valueToEntryStringMap_ = new TreeMap<String, String>(); // 値を元に表示名を取得するためのMap
- public MyListPreference(Context context, AttributeSet attrs) {
- super(context, attrs);
- final String ANDROID_NAMESPASE="http://schemas.android.com/apk/res/android";
- // android:entries で指定されたXMLを取得して、リストの表示名一覧を取得
- String entResName = attrs.getAttributeValue(ANDROID_NAMESPASE, "entries");
- int entArrayId = context.getResources().getIdentifier( entResName, "values", context.getPackageName());
- if ( entArrayId ==0 ) {
- // 「@array/item_names」みたいのを期待してたが実際とれるのは「@1234567」みたいなのだ。コレの場合getIdentifierは失敗して0がかえる
- entArrayId = Integer.parseInt(entResName.substring(1)); // @のあとの数値がidそのものなのでparseするか・・・
- }
- String [] entrys = context.getResources().getStringArray(entArrayId);
- // android:entryValues で指定されたXMLを取得して、リストの値一覧を取得
- String valResName = attrs.getAttributeValue(ANDROID_NAMESPASE, "entryValues");
- int valArrayId = context.getResources().getIdentifier( valResName, "values", context.getPackageName());
- if ( valArrayId ==0 ) {
- // 「@array/item_names」みたいのを期待してたが実際とれるのは「@1234567」みたいなのだ。コレの場合getIdentifierは失敗して0がかえる
- valArrayId = Integer.parseInt(valResName.substring(1)); // @のあとの数値がidそのものなのでparseするか・・・
- }
- String [] values = context.getResources().getStringArray(valArrayId);
- // Mapに格納
- for ( int i=0; i< values.length; i++ ) {
- valueToEntryStringMap_.put(values[i], entrys[i]);
- }
- }
- @Override
- protected void onSetInitialValue(boolean restorePersistedValue, Object defaultValue) {
- super.onSetInitialValue(restorePersistedValue, defaultValue);
- String text = getPersistedString("(未設定)");
- setSummary( valueToEntryStringMap_.get(text) );
- }
- @Override
- protected void onDialogClosed(boolean positiveResult) {
- if ( positiveResult) {
- super.onDialogClosed(positiveResult);
- String text = getPersistedString("(未設定)");
- setSummary( valueToEntryStringMap_.get(text) );
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement