2017-01-21 2 views
2

멀티 선택 대화 상자를 닫을 때 주 목록을 표시하는 MultiSelectListPreference가 있습니다. 선택된 값을 %s을 사용하여 요약으로 표시하고 싶지만 ListPreference에서만 작동합니다. 이것에 대한 해결책이 있습니까?multiselectlistpreference 요약에서 선택된 값 표시

<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

당신은 getSummary 방법과 같이 MultiSelectListPreference의 사용자 지정 버전을 만들고 ovveride해야합니다

@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; 
}