2010-06-06 25 views
6

içinde HorizontalScrollView ile tıklanabilir değil Oldukça karmaşık bir ListView var. Benim etkinlikteListView öğeleri,

> LinearLayout (vertical) 
    > LinearLayout (horizontal) 
    > include (horizontal LinearLayout with two TextViews) 
    > include (ditto) 
    > include (ditto) 
    > TextView 
    > HorizontalScrollView (this guy is my problem) 
    > LinearLayout (horizontal) 

, bir öğe oluşturulduğunda (getView() denir) ben (diğer, daha basit şeyler doldurarak yanı sıra) HorizontalScrollView içine LinearLayout dinamik TextView s eklenir: Her öğe şuna benzer. İnanılmaz bir şekilde, performans oldukça iyidir.

Benim sorunum, HorizontalScrollView eklediğimde, liste öğelerimin çıkarılabilir hale gelmesidir. Tıklandığında turuncu arka plana sahip değiller ve OnItemClickedListener'u kurmuyorlar (basit bir Log.d araması yapmak için).

Liste öğelerimi yeniden tıklanabilir hale getirebilir miyim?


Düzenleme: üstteki LinearLayout üzerine android:descendantFocusability="blocksDescendants" ayarı çalışıyor gibi görünüyor. Yine de başka yollar olup olmadığını bilmek isterim: liste öğelerimde odaklanabilir öğeler istiyorsam ne yapmalıyım? üstteki LinearLayout üzerinde kullanma

cevap

8

android:descendantFocusability="blocksDescendants" hile yaptı. Elemanlar içeride hala odaklanabilir (yani olmayan bir dokunmatik cihazda bunları tıklayın olamaz) sadece konum "tıklanabilir" yapılabilir. Benim için yeterince iyi. benim TableLayout kaydırma için HorizontalScrollView uygulandığında liste öğesinin üzerine tıklayın ince ama yapamaz çalışıyor

0

My düzen LinearLayout HorizontalScrollView TableLayout .........

follwos gibidir descendantFocusability = "blocksDe:/TableLayout /HorizontalScrollView /LinearLayout

i robot uygulanan "En iyi benim en üst düzeye" Herhangi bir Yardım için

0

bana yardımcı olmadı. Yani

Yani, dinleyici şıkkında yer fark etti.

public interface EventListItemOnClickListener { 
    public void itemClicked(); 
} 

Ve adaptörü

tüm dinleyicileri bildirmek

private List<EventListItemOnClickListener> listeners; 
protected void notifyOnClick(int position){ 
    for(int i=0; i<listeners.size();++i) 
    listeners.get(i).itemClicked((Event)events.get(position)); 
} 
... 
    @Override 
    public void onClick(View v) { 
     notifyOnClick(position); 
    } 
...