2011-03-21 13 views
43

में गतिशील सूची प्राथमिकता डायनामिक सूची कैसे उत्पन्न करें एंड्रॉइड में संदर्भ? मैं सभी वाईफाई एक्सेस पॉइंट प्राप्त करना चाहता हूं और वरीयता गतिविधि में उपयोग करके एक सूची बनाना चाहता हूं (यानी सूची वरीयता का उपयोग करके एक सूची बनाएं)। यह कैसे करें?एंड्रॉइड

+2

यह देखते हुए कि आइटम यह 'onCreate' में आइटम स्थापित करने के लिए पर्याप्त नहीं है गतिशील हो जाएगा:
(ख) अपने PreferenceFragmentPreferenceActivity का उपयोग कर नहीं द्वारा शुरू आसानी से आप यह कर सकते हैं। ListPreference क्लिक होने पर आपको मानों को अपडेट करने की भी आवश्यकता होती है: http://stackoverflow.com/questions/6474707/how-to-fill-listpreference- गतिशील-when-onpreferenceclick-is-triggered/13828912#13828912 – ccpizza

उत्तर

26

एंड्रॉइड में प्रत्येक एक्सएमएल तत्व प्रोग्रामेटिक रूप से बनाया जा सकता है क्योंकि तत्व का नाम जावा क्लास भी है। इसलिए आप कोड में एक 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); 
+8

findViewById के साथ काम करता है देखा गया। ListPreference एक दृश्य नहीं है, इसलिए दूसरा उदाहरण काम नहीं कर रहा है। कास्ट नहीं कर सकता –

+0

findPiewference को खोजने के बजाय काम करना चाहिए ViewById। हालांकि खोज हनीकॉम्ब में प्रेसीफर को बहिष्कृत किया गया है। –

26

एक गतिशील सूची वरीयता बनाने के लिए, यू की जरूरत है preference activity बनाएं (यानी प्राथमिकता के रूप में गतिविधि को विस्तारित करने के लिए)।

निम्नलिखित कोड का उपयोग गतिशील रूप से सूची बनाने के लिए किया जा सकता है।

 
// Root 
     PreferenceScreen root = getPreferenceManager().createPreferenceScreen(this); 
     dialogBasedPrefCat.setTitle("Category Title"); 
     root.addPreference(dialogBasedPrefCat); //Adding a category 

// List preference under the category 
     ListPreference listPref = new ListPreference(this); 
     listPref.setKey("keyName"); //Refer to get the pref value 
     listPref.setEntries("Array of values"); 
     listPref.setEntryValues("Array of item value"); 
     listPref.setDialogTitle("Dialog Title"); 
     listPref.setTitle("Title"); 
     listPref.setSummary("Summary"); 
     dialogBasedPrefCat.addPreference(listPref); Adding under the category 

     return root; 

आशा है कि यह एक dea पाने के लिए मदद करता है ...

संपादित करें:

बनाएँ और [] इस तरह CharSequence में मान जोड़ते:

CharSequence[] cs = new String[]{"myValue"}; 
+6

गतिशील रूप से अन्य प्रकार की प्राथमिकताओं को बनाने के लिए यह उदाहरण कोड देखें: http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/preference/PreferencesFromCode.html –

+0

थोड़ा अजीब कि GetEntries और getEntryValues ​​DOA हैं लेकिन मुझे यकीन है कि एक अच्छा कारण है। और यह एक अच्छा समाधान है। – Malachi

+1

बोरिस - आपका लिंक काम नहीं करता है: यह मुझे डाउनलोड नमूने सूचकांक में ले जाता है।हालांकि, मैंने अपने डाउनलोड किए गए नमूने में अपने लिंक पर होवर करते समय इंगित पथ का पालन किया और पाया। (किसी और के लिए: एंड्रॉइड-एसडीके \ नमूने से शुरू करें \ android- \ ApiDemos फिर शेष बोरिस के पथ का पालन करें) –

0

इस minimalist तकनीक दोनों वातावरण के लिए है।

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; 
} 

में नोट्स:
(क) एक्सएमएल आत्म दस्तावेजीकरण और शायद एक बेट्टे है गतिशील वरीयता निर्माण से आर पसंद।

image