2010-06-06 19 views
6

Ho abbastanza complicato ListView. Ogni elemento simile a questa:Oggetti ListView non selezionabili con HorizontalScrollView all'interno di

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

Nella mia attività, quando viene creato un oggetto (getView() si chiama) aggiungo dinamici TextView s al LinearLayout all'interno del HorizontalScrollView (oltre a riempire le altre cose, più semplice out). Sorprendentemente, le prestazioni sono piuttosto buone.

Il mio problema è che quando ho aggiunto il HorizontalScrollView, gli elementi della mia lista sono diventati non selezionabili. Non ottengono lo sfondo arancione quando si fa clic e non attivano lo OnItemClickedListener che ho impostato (per effettuare una semplice chiamata Log.d).

Come posso rendere nuovamente selezionabili gli elementi della mia lista?


Edit: impostazione android:descendantFocusability="blocksDescendants" sul ramo più alto LinearLayout sembra funzionare. Mi piacerebbe sapere se ci sono altri modi, però: cosa succede se voglio oggetti focalizzabili nelle mie liste?

risposta

8

Utilizzando android:descendantFocusability="blocksDescendants" in alto LinearLayout ha fatto il trucco. Gli elementi all'interno possono ancora essere resi "cliccabili", ma non possono essere messi a fuoco (cioè non puoi cliccarli su un dispositivo non touchscreen). Abbastanza buono per me.

0

quando ho applicato HorizontalScrollView alla mia TableLayout scorrimento sta funzionando benissimo, ma in grado di fare clic su elemento dell'elenco mia disposizione è la follwos

LinearLayout HorizontalScrollView TableLayout ......... /TableLayout /HorizontalScrollView /LinearLayout

i applicato android: descendantFocusability = "blocksDe discendenti "al mio top più linearlayout Qualsiasi aiuto

0
android:descendantFocusability="blocksDescendants" 

non ha aiutato per me. Quindi

Quindi, ho realizzato l'ascoltatore patern.

public interface EventListItemOnClickListener { 
    public void itemClicked(); 
} 

E in adattatore notificare a tutti gli ascoltatori

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); 
    } 
... 
Problemi correlati