web-dev-qa-db-ja.com

androidの動的ListPreference

Androidで動的listPreferenceを生成する方法は?私はすべてのwifiアクセスポイントを取得し、設定でActivityを使用してリストを作成します(つまり、listpreferenceを使用してリストを作成します)。これを行う方法?

44
kkk

AndroidのすべてのXML要素は、要素名もJavaクラスであるため、プログラムで作成できます。したがって、コードでListPreferenceを作成できます。

CharSequence[] entries = { "One", "Two", "Three" };
CharSequence[] entryValues = { "1", "2", "3" };
ListPreference lp = new ListPreference(this);
lp.setEntries(entries);
lp.setEntryValues(entryValues);

または、XMLで作成してから、コードにエントリ/エントリ値を追加することもできます。

CharSequence[] entries = { "One", "Two", "Three" };
CharSequence[] entryValues = { "1", "2", "3" };
ListPreference lp = (ListPreference)findPreference("list_key_as_defined_in_xml");
lp.setEntries(entries);
lp.setEntryValues(entryValues);
27
Philio

動的リスト設定を作成するには、 設定アクティビティ を作成する必要があります(つまり、アクティビティをPreferenceActivityとして拡張する)。

次のコードを使用して、リストを動的に作成できます。

 // Root 
 PreferenceScreen root = getPreferenceManager()。createPreferenceScreen(this); 
 dialogBasedPrefCat.setTitle( "Category Title"); 
 root.addPreference(dialogBasedPrefCat ); //カテゴリの追加
 
 //カテゴリの下のリスト設定
 ListPreference listPref = new ListPreference(this); 
 listPref.setKey( "keyName"); // pref値の取得を参照してください
 listPref.setEntries( "値の配列"); 
 listPref.setEntryValues( "アイテム値の配列"); 
 listPref.setDialogTitle( 「ダイアログタイトル」); 
 listPref.setTitle( "Title"); 
 listPref.setSummary( "Summary"); 
 dialogBasedPrefCat.addPreference(listPref);カテゴリ
 
の下に追加すると、ルートを返します; 
 

これが!deaの取得に役立つことを願っています...

編集:

次のように、値を作成してCharSequence []に​​追加します。

CharSequence[] cs = new String[]{"myValue"};
26
Dijo David

この最小限の手法は、両方の環境に対応しています。

Preferences.xmlで

_<!-- NB: Dynamic array insertion for 'entries'/'entryValues' -->
<ListPreference
    Android:key="xyzzy"
    Android:title="..."
    Android:summary="..."
    Android:numeric="integer"
    Android:defaultValue="0"
    Android:layout="?PrefLayoutDtl" 
/>
_

PreferenceFragment.onCreate()

_addPreferencesFromResource(R.xml.preferences);
expand_xyzzy((ListPreference)findPreference("xyzzy"));
_

他の場所

_public static Preference expand_xyzzy (ListPreference pref) {
    if (pref == null) return pref;
    pref.setEntries(new String["one","two","three];
    pref.setEntryValues(new String["0","1","2"]);
    return pref;
}
_

注:
(a)XMLは自己文書化されており、おそらく動的な設定の作成よりも優れた選択肢です。
(b)PreferenceFragmentを使用しないでPreferenceActivityを起動すると、簡単にこれを行うことができます。

image

0
Bad Loser