MultiSelectListPreference 的使用心得


最近在學習Android上的開發,打算做一個app。在做之前感覺很簡單的功能,自己也有幾年的C++經驗,應該學起來很容易。但是事實告訴我,要注意的細節還是很多的。

大部分的app都會有設置頁面, 用來配置一些使用上的特性,android提供了一個perferenceActivity的activity來支持與設置相關的開發工作,具體的內容可以參看sdk。這里主要說明一下如何使用MultiSelectListPreference。MultiSelectListPreference 提供了一個多選的列表供用戶選擇,然后會自動的持久化到SharedPreference中去,一個比較簡單的xml配置節如下:

            <MultiSelectListPreference
                android:key="abc"
                android:entries="@array/days"
                android:entryValues="@array/day_value"  
                android:title="重復"
                android:summary="無"                       
                />

其中的android:entries 是彈出列表的文本數組,而android:entryValues對應相映的值數組,一一對應。android:title控制perference的文本,summary是描述性的文本。 上面代碼中的 android:entries  和android:entryValues在values中進行制定,舉例如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="days">
        <item>周一</item>
        <item>周二</item>
        <item>周三</item>
        <item>周四</item>
        <item>周五</item>
        <item>周六</item>
        <item>周日</item>        
    </string-array>  
    
    <string-array name="day_value">
        <item>1</item>
        <item>2</item>
        <item>4</item>
        <item>8</item>
        <item>16</item>
        <item>32</item>
        <item>64</item>        
    </string-array> 
</resources>

這樣就實現了一個很簡單的設置項,如果沒有更進一步的要求就可以完成了。但是我們制定的這個preference在activity上的顯示還比較單調,無法根據用戶選中的項來更新preference的文本顯示。為了達到這個目的,我們需要監聽這個preference對應的onPreferenceChange事件來進行處理。具體的代碼如下:

        Preference pref = findPreference("abc");
        pref.setOnPreferenceChangeListener(new OnPreferenceChangeListener(){
            @Override
            public boolean onPreferenceChange(Preference pref, Object arg1) {                
                pref.setSummary(arg1.toString());                
                return true;
            }            
        });

這樣就可以動態的按照用戶的選擇來顯示不同的 Title和Summary.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM