2017-01-21 60 views
2

我有一個MultiSelectListPreference,它顯示了用戶關閉多選對話框時的星期列表,我想使用%s來顯示摘要中的選定值,但它僅適用於ListPreference。有沒有解決方案?從多選列表首選項中顯示選定值

<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" /> 

回答

0

您需要創建MultiSelectListPreference的定製版本和ovveride getSummary方法是這樣的:

@Override 
public CharSequence getSummary() { 
    CharSequence cs = super.getSummary(); 
    String summary = cs.toString(); 

    if (summary.contains("%s")) { 
     String text = ""; 
     StringBuilder builder = new StringBuilder(); 
     CharSequence[] entries = getEntries(); 
     if(entries.length > 0) { 
      CharSequence[] entryValues = getEntryValues(); 
      Set<String> values = getValues(); 
      int pos = 0; 

      for (String value : values) { 
       pos++; 
       int index = -1; 
       for (int i = 0; i < entryValues.length; i++) { 
        if (entryValues[i].equals(value)) { 
         index = i; 
         break; 
        } 
       } 
       builder.append(entries[index]); 
       if (pos < values.size()) 
        builder.append(", "); 
      } 
      text = builder.toString(); 
     } 
     summary = String.format(summary, text); 
    } 

    return summary; 
} 
相關問題