मैं एक वरीयता संवाद विंडो बनाने की कोशिश कर रहा हूं जो उपयोगकर्ता को सूची में एक आइटम का चयन करने की अनुमति देता है। वर्तमान में यह केवल आपको एक आइटम चुनने की अनुमति देता है। क्या इसे करने का कोई आसान तरीका है? मैंने पूरे इंटरनेट पर देखा है और अभी तक एक रास्ता नहीं देखा है। किसी भी मदद की सराहना की है!Android में ListPreference एकाधिक विकल्प बनाने का आसान तरीका?
उत्तर
प्राथमिकता परिभाषा के अनुसार एकल मान हैं। यदि आप एक से अधिक विकल्प ListPreference
को कार्यान्वित करना चाहते हैं तो आपको इस कक्षा या android.preference.Preference
को उप-वर्ग करना होगा और अपना स्वयं का कार्यान्वयन करना होगा।
वैकल्पिक रूप से आप एक साधारण वरीयता स्क्रीन से एक गतिविधि को कॉल कर सकते हैं और सब कुछ स्वयं को संभाल सकते हैं।
आप विभिन्न बूलियन वरीयताओं के रूप में, एक विभाजक या बेहतर के साथ स्ट्रिंग वरीयता में मूल्यों को स्टोर कर सकते हैं।
यहां आपको आवश्यक सभी कोड हैं!
http://blog.350nice.com/wp/wp-content/uploads/2009/07/listpreferencemultiselect.java
public class ListPreferenceMultiSelect extends ListPreference {
//Need to make sure the SEPARATOR is unique and weird enough that it doesn't match one of the entries.
//Not using any fancy symbols because this is interpreted as a regex for splitting strings.
private static final String SEPARATOR = "OV=I=XseparatorX=I=VO";
private boolean[] mClickedDialogEntryIndices;
public ListPreferenceMultiSelect(Context context, AttributeSet attrs) {
super(context, attrs);
mClickedDialogEntryIndices = new boolean[getEntries().length];
}
@Override
public void setEntries(CharSequence[] entries) {
super.setEntries(entries);
mClickedDialogEntryIndices = new boolean[entries.length];
}
public ListPreferenceMultiSelect(Context context) {
this(context, null);
}
@Override
protected void onPrepareDialogBuilder(Builder builder) {
CharSequence[] entries = getEntries();
CharSequence[] entryValues = getEntryValues();
if (entries == null || entryValues == null || entries.length != entryValues.length) {
throw new IllegalStateException(
"ListPreference requires an entries array and an entryValues array which are both the same length");
}
restoreCheckedEntries();
builder.setMultiChoiceItems(entries, mClickedDialogEntryIndices,
new DialogInterface.OnMultiChoiceClickListener() {
public void onClick(DialogInterface dialog, int which, boolean val) {
mClickedDialogEntryIndices[which] = val;
}
});
}
public static String[] parseStoredValue(CharSequence val) {
if ("".equals(val))
return null;
else
return ((String)val).split(SEPARATOR);
}
private void restoreCheckedEntries() {
CharSequence[] entryValues = getEntryValues();
String[] vals = parseStoredValue(getValue());
if (vals != null) {
for (int j=0; j<vals.length; j++) {
String val = vals[j].trim();
for (int i=0; i<entryValues.length; i++) {
CharSequence entry = entryValues[i];
if (entry.equals(val)) {
mClickedDialogEntryIndices[i] = true;
break;
}
}
}
}
}
@Override
protected void onDialogClosed(boolean positiveResult) {
// super.onDialogClosed(positiveResult);
CharSequence[] entryValues = getEntryValues();
if (positiveResult && entryValues != null) {
StringBuffer value = new StringBuffer();
for (int i=0; i<entryValues.length; i++) {
if (mClickedDialogEntryIndices[i]) {
value.append(entryValues[i]).append(SEPARATOR);
}
}
if (callChangeListener(value)) {
String val = value.toString();
if (val.length() > 0)
val = val.substring(0, val.length()-SEPARATOR.length());
setValue(val);
}
}
}
}
जो Android के लिए-एपीआई स्तरीय आप इस चाहते हैं?
आप आप एपीआई स्तर 11 का उपयोग करते हैं का उपयोग कर सकते MultiSelect Preference for Android 3.0 or higher
आप एपीआई स्तरीय छोटे 11 का उपयोग करते हैं आप इस पद के लिए उपयोग कर सकते हैं इस Custom Implementation of MuliiSelect Preference
धन्यवाद, यह मेरे लिए एक बहुत मदद की। मैंने कक्षा में कुछ बदलाव किए हैं ताकि उपयोगकर्ता चयनित मानों के साथ वरीयताओं में दिखाए गए सारांश को अपडेट कर सकें।
इस तरह उपयोगकर्ता स्पिनर खोलने के बिना अपने विकल्प देख सकते हैं।
// Fills the Entry Values List
@Override
public void setEntryValues(CharSequence[] entryValues) {
super.setEntryValues(entryValues);
restoreCheckedEntries();
}
// Updates the Summary
@Override
public void setSummary(CharSequence entries) {
String s = "";
for (int x = 0; x < getEntryValues().length; x++)
if (mClickedDialogEntryIndices[x])
s += (s.equals("") ? "" : ", ") + getEntries()[x];
super.setSummary(s);
}
विधि setSummary SettingsActivity.java यहाँ के भीतर बुलाया जाना चाहिए:
private static Preference.OnPreferenceChangeListener sBindPreferenceSummaryToValueListener
= new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object value) {
String stringValue = value.toString();
if (preference instanceof ListPreferenceMultiSelect) {
ListPreferenceMultiSelect listPreference =
(ListPreferenceMultiSelect) preference;
listPreference.setSummary("");
}
return true;
}
};
विधि setEntryValues setEntries के साथ एक साथ कहा जा सकता है
यहाँ जोड़ा तरीके हैं।
यह मेरे लिए काम किया! एंड्रॉइड 2.2 या नए के साथ संगत।
- 1. ListPreference से चयनित विकल्प कैसे प्राप्त करें?
- 2. जावा में एक जीयूआई बनाने का सबसे आसान तरीका?
- 3. क्या जावास्क्रिप्ट लुकअप टेबल बनाने का कोई आसान तरीका है?
- 4. structs की सरणी बनाने का सबसे आसान तरीका क्या है?
- 5. एक पूरी विधि थ्रेड-सुरक्षित बनाने का सबसे आसान तरीका?
- 6. नियुक्ति बुकिंग वेबसाइट बनाने का सबसे आसान तरीका क्या है?
- 7. क्या कोडनिर्देशक पर सबडोमेन बनाने का कोई आसान तरीका है?
- 8. ओपनजीएल: छाया और प्रकाश वॉल्यूम बनाने का सबसे आसान तरीका?
- 9. रेल में एकाधिक फ़िल्टर बनाने का सबसे अच्छा तरीका
- 10. ListPreference सारांश
- 11. ListPreference निर्भरता
- 12. पेड़ में सबट्री खोजने का आसान तरीका
- 13. आसान तरीका
- 14. एंड्रॉइड पर Android बनाने का एंड्रॉइड
- 15. पायथन में उपज का उपयोग करके रिक्त पुनरावृत्ति बनाने का सबसे आसान तरीका क्या है?
- 16. Android पर उपमेनू में एकाधिक चेकबॉक्स का चयन कैसे करें?
- 17. धूमकेतु चैट बनाने के लिए सबसे आसान तरीका
- 18. Android में सेवा का एकाधिक उदाहरण कैसे प्राप्त करें
- 19. क्या ActiveAdmin के साथ संबंधित डेटा बनाने/चुनने का कोई आसान तरीका है?
- 20. सबसे आसान तरीका RavenDB
- 21. ListPreference डिफ़ॉल्ट मान
- 22. एक अजगर पैकेज के लिए वैकल्पिक सी एक्सटेंशन बनाने का सबसे आसान तरीका क्या है?
- 23. चुनिंदा बॉक्स में एक पूरे ऑप्टग्रुप का चयन करने का आसान तरीका
- 24. क्या एमएस-एक्सेस क्वेरी में एकाधिक सम्मिलन विवरण बनाने का कोई तरीका है?
- 25. जावा में जेनेरिक सरणी का सबसे आसान विकल्प क्या है?
- 26. एक रेगेक्स पैटर्न में मानों को इंटरपोल करके स्ट्रिंग बनाने का सबसे आसान तरीका?
- 27. क्या सी ++ में न्यूनतम ढेर बनाने का कोई आसान तरीका है?
- 28. SharePoint में, कस्टम सूची 'schema.xml' फ़ाइल बनाने का सबसे आसान तरीका क्या है?
- 29. सी # में डेटाटेव को डेटाटाइव की प्रतिलिपि बनाने का सबसे आसान तरीका?
- 30. WxPython में आकार की विंडो बनाने का सबसे आसान तरीका क्या है?