我正在構建一個應用程序,當我需要顯示一個設置屏幕時,用戶可以檢查哪些項目將在主要活動的列表視圖中顯示。Android - 如何設置CheckBoxPreference的值?要麼?
我正在解析這些類別的XML,所以PreferenceScreen
以編程方式完成,並且所有CheckBoxPreferences
都構建在一個循環中。代碼:
try {
URL url = new URL("http://www.someurl.com/phone/categories.php");
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new InputSource(url.openStream()));
doc.getDocumentElement().normalize();
NodeList nodeList = doc.getElementsByTagName("category");
for (int i = 0; i < nodeList.getLength(); i++) {
Element category = (Element)nodeList.item(i);
Node id = category.getElementsByTagName("id").item(0);
Node title = category.getElementsByTagName("name").item(0);
CheckBoxPreference togglePref = new CheckBoxPreference(this);
togglePref.setKey("category_" + id.getChildNodes().item(0).getNodeValue());
togglePref.setDefaultValue(true);
togglePref.setTitle(title.getChildNodes().item(0).getNodeValue());
root.addPreference(togglePref);
}
} catch(Exception ex) {
Log.e(this.getClass().getSimpleName(), ex.getMessage());
}
其中root
爲PreferenceScreen
對象。
我的問題是,我不僅需要爲一個複選框選項存儲標題,而且還需要存儲該類別的標識,但在CheckBoxPreference
對象中沒有此類屬性。
我的問題是,如果有另一種解決方法,或者我應該延長CheckBoxPreference
類,並創建一些自定義MyCheckBoxPreference
,也將存儲其他的「價值」?
我的願景是與普通的HTML複選框具有相似的(或相同的) - 雖然它沒有設置(提交)的值,如果複選框沒有被選中,而另一方面被選中時獲得具體的值而不是隻是真/假...
AFAIK CheckBoxPreference
只有狀態選中/未選中,而沒有值可以返回。
我在想,我正好被設置爲具體cetagories而不是category_<ID>
和ID的首選項鍵,然後調用sharedPreferences.getAll()
- 我想到只檢查CheckBoxPreferences
應返回,然後通過他們的密鑰的獲得我應該能夠運行與類別ID ...這可能是一個簡單的解決方案和好辦法?
非常感謝任何適當的建議!
好的,我認爲關鍵是像一個首選唯一標識符,不是它的價值......但我會試一試... – shadyyx 2011-04-19 23:23:26
@shadyyx:這是首選唯一標識符。但是,對於布爾狀態,您不需要標識符以及是否檢查其他「值」。 – CommonsWare 2011-04-19 23:31:58
@CommonsWare可以根據條件改變複選框的狀態,而不是用戶是否點擊它? – 2016-05-28 05:05:25