2012-10-01 22 views
5

मैं प्रोग्रामिक रूप से एक सूचीप्रदर्शन खोलने की कोशिश कर रहा हूं, जो वरीयता श्रेणी के भीतर मौजूद है।एंड्रॉइड ListPreference पर क्लिक करने या अनुकरण करने के लिए कैसे करें, जो प्राथमिकता श्रेणी के अंदर है?

<PreferenceScreen 
    android:key="pref_screen" > 

    <PreferenceCategory 
     android:title="Category" 
     andorid:key="pref_category"> 
     <ListPreference 
      android:key="pref_list" 
      android:title="List" /> 
    </PreferenceCategory> 
</PreferenceScreen> 

मेरा लक्ष्य "pref_list" खोलने के लिए प्रोग्राम के, और उपयोगकर्ता के लिए इसे प्रदर्शित है: XML संरचना कुछ की तरह है। मैं this विषय में देखा, इस समाधान की पेशकश:

// the preference screen your item is in must be known 
PreferenceScreen screen = (PreferenceScreen) findPreference("pref_screen"); 

// the position of your item inside the preference screen above 
int pos = findPreference("pref_list").getOrder(); 

// simulate a click/call it!! 
screen.onItemClick(null, null, pos, 0); 

यह PreferenceCategory के बिना एक PreferenceScreen के लिए पूरी तरह से काम करता है, लेकिन मैं इसे मेरे मामले के लिए काम नहीं मिल सकता है (ListPreference PreferenceCategory के अंदर स्थित है जब)।

मैं अपने मामले के लिए इसे कैसे संशोधित कर सकता हूं? या कोई अन्य समाधान है?

मुझे वरीयता श्रेणी में onItemClick() के समान वरीयता श्रेणी में नहीं मिला। getOrder() मेरे वरीयता श्रेणी के मूल्य के लिए 'pos' बदलना भी काम नहीं करता था।

उत्तर

-1

एक अलग समाधान की पेशकश, एक उंगली स्पर्श का अनुकरण:

उपयोग View.getLocationOnScreen() और/या getLocationInWindow() सूची आइटम की स्थिति प्राप्त करने के लिए। तो आप एक क्लिक अनुकरण करने के लिए width और height पा सकते हैं।

MotionEvent me=MotionEvent.obtain(0, 0, MotionEvent.ACTION_DOWN, width, height, 0); 
    rootView.dispatchTouchEvent(me); 
    me=MotionEvent.obtain(0, 0, MotionEvent.ACTION_UP, width, height, 0); 
    rootView.dispatchTouchEvent(me); 
    me.recycle(); 
0

मैं जानता हूँ कि यह एक बहुत पुरानी धागा है, लेकिन मैं सिर्फ इसलिए यहाँ मेरी छोटी समाधान this एक

ListAdapter listAdapter = getPreferenceScreen().getRootAdapter(); 

    for (int itemNumber = 0; itemNumber < listAdapter.getCount(); itemNumber++) 
     if (listAdapter.getItem(itemNumber).equals(findPreference("pref_list"))) 
      getPreferenceScreen().onItemClick(null, null, itemNumber, 0); 
के आधार पर समान समस्या लिया है

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^