Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Showing selected values in summary from multiselectlistpreference

Tags:

android

I Have a MultiSelectListPreference which shows a the list of weeks when user close the multi select dialog i would like to show the selected values in summary using %s but it only works with ListPreference. Is there any solution for this?

<MultiSelectListPreference
        android:id="@+id/pref_select_week"
        android:defaultValue="@array/week_array_values"
        android:entries="@array/week_array"
        android:entryValues="@array/week_array_values"
        android:icon="@drawable/ic_pref_time"
        android:key="keyZodiacSign"
        android:summary="%s"
        android:title="Select Days" />
like image 972
Sai Avatar asked Oct 23 '25 02:10

Sai


1 Answers

First add an extension method to MultiSelectListPreference which sets the summary from the selected values:

fun MultiSelectListPreference.setSummaryFromValues(values: Set<String>) {
    summary = values.map {entries[findIndexOfValue(it)]}.joinToString(", ")
}

And then in eg. onCreateView of your PreferenceFragmentCompat:

val columnSelect = findPreference("EXPORT_COLUMNS") as MultiSelectListPreference
columnSelect.onPreferenceChangeListener = Preference.OnPreferenceChangeListener { preference, newValue ->
    columnSelect.setSummaryFromValues(newValue as Set<String>)
    true
}
columnSelect.setSummaryFromValues(columnSelect.values)
like image 122
tobltobs Avatar answered Oct 24 '25 15:10

tobltobs



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!