ユーザーがメインアクティビティのリストビューに表示されるカテゴリのアイテムを確認できるときに、設定画面を表示する必要があるアプリを構築しています。
これらのカテゴリの 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
私の問題は、1 つのチェックボックス オプションのタイトルだけでなく、カテゴリの ID も保存する必要があるが、CheckBoxPreference
オブジェクトにそのようなプロパティがないことです。
私の質問は、別の回避策があるかどうか、またはCheckBoxPreference
クラスを拡張して、MyCheckBoxPreference
別の「値」も格納するカスタムを作成する必要があるかどうかです。
私のビジョンは、一般的な HTML チェックボックスと似た (または同じ) ものを用意することです。チェックボックスがチェックされていない場合、値が設定されていない (送信されていない) 場合、チェックボックスがチェックされている場合は、true/false ではなく具体的な値を取得します。 ...
私の知る限り、CheckBoxPreference
返される値はありませんが、状態がチェックされている/チェックされていないだけです。
私は、設定キーを具体的なセタゴリのIDだけに設定してからcategory_<ID>
呼び出すsharedPreferences.getAll()
ことCheckBoxPreferences
を考えていました.これは簡単な解決策であり、良いアプローチでしょうか???
適切なアドバイスをありがとうございました!!!