2012-10-01 10 views
5

Program PreferencesCategory içinde mevcut bir ListPreference, açmaya çalışıyorum.İçinde tercih kategorisinde bulunan android ListPreference nasıl açılır veya benzetilir?

<PreferenceScreen 
    android:key="pref_screen" > 

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

Amacım programlama "pref_list" açın ve kullanıcıya görüntüler şudur: XML yapısı şey gibidir. Bu çözümü sunan this konu içine baktı:

// 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); 

Bu PreferenceCategory olmadan PreferenceScreen için mükemmel çalışıyor, ancak (ListPreference PreferenceCategory içine girdiğinde) benim durum için çalışma elde edilemez.

Durumum için bunu nasıl değiştirebilirim? Yoksa başka bir çözüm var mı?

PreferenceCategory öğesinde PreferenceScreen öğesinin onItemClick() benzeri bir yöntemi bulamadım. PreferenceCategory'imin getOrder() değeri için 'pos' değiştirme işlemi de işe yaramadı.

kullanın View.getLocationOnScreen() ve/veya getLocationInWindow() liste öğesinin konumunu almak için:

cevap

-1

bir parmak dokunmatik simüle farklı bir çözüm sunan. Böylece bir tıklamayı simüle etmek için width ve height bulabilirsiniz.

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

Ben çok eski bir iplik olduğunu biliyorum ama sadece this bir

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); 
dayalı işte benim kısa çözüm benzer bir sorun yaşadım
İlgili konular