0

ユーザーがメインアクティビティのリストビューに表示されるカテゴリのアイテムを確認できるときに、設定画面を表示する必要があるアプリを構築しています。

これらのカテゴリの 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を考えていました.これは簡単な解決策であり、良いアプローチでしょうか???

適切なアドバイスをありがとうございました!!!

4

1 に答える 1

1

私の問題は、1 つのチェックボックス オプションのタイトルだけでなく、カテゴリの ID も保存する必要があることですが、CheckBoxPreference オブジェクトにはそのようなプロパティがありません。

私見、それが鍵の目的です。

設定キーを category_ の代わりに具体的なセタゴリの ID に設定し、sharedPreferences.getAll() を呼び出すことを考えていました - チェックされた CheckBoxPreferences のみが返され、それらのキーを取得することで操作できるはずですカテゴリIDを使用して...これは簡単な解決策であり、良いアプローチでしょうか???

CheckBoxPreferenceチェックされているかどうかに関係なく、ユーザーが触れたすべてのオブジェクトを取得します。これはおそらく正しいアプローチです。

于 2011-04-19T22:02:34.613 に答える