2010-06-06 4 views
6

J'ai un assez compliqué ListView. Chaque élément ressemble à ceci:ListView articles ne pas cliquables avec HorizontalScrollView à l'intérieur

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

Dans mon activité, lorsqu'un élément est créé (getView() est appelé) ajouter TextView dynamique de la LinearLayout à l'intérieur du HorizontalScrollView (en plus de remplir l'autre, des choses simples sur). Étonnamment, la performance est plutôt bonne.

Mon problème est que lorsque j'ai ajouté le HorizontalScrollView, mes éléments de liste sont devenus incassables. Ils ne reçoivent pas l'arrière-plan orange lorsqu'ils sont cliqués et ils ne tirent pas le OnItemClickedListener que j'ai configuré (pour faire un simple appel Log.d).

Comment rendre mes éléments de liste cliquables à nouveau?


Edit: réglage android:descendantFocusability="blocksDescendants" sur la plus haute LinearLayout semble fonctionner. J'aimerais savoir s'il y a d'autres moyens, mais si je veux des éléments focalisables dans mes éléments de liste?

Répondre

8

En utilisant android:descendantFocusability="blocksDescendants" sur le plus haut LinearLayout a fait l'affaire. Les éléments à l'intérieur peuvent toujours être rendus "cliquables", ils ne sont tout simplement pas focalisables (c'est-à-dire que vous ne pouvez pas les cliquer sur un dispositif sans écran tactile). Suffisant pour moi.

0

quand j'appliqué HorizontalScrollView à mon défilement TableLayout fonctionne bien, mais pas à cliquer sur un élément de liste Ma mise en page est comme follwos

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

i appliqué android: descendantFocusability = "blocksDe scendants "à mon top linearlayout toute Aide

0
android:descendantFocusability="blocksDescendants" 

n'a pas aidé pour moi. Donc

Donc, j'ai réalisé l'écouteur patern.

public interface EventListItemOnClickListener { 
    public void itemClicked(); 
} 

et adaptateur notify tous les auditeurs

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); 
    } 
... 
Questions connexes