2011-01-03 5 views
0

J'ai créé des contrôles d'interface utilisateur étendus basés sur les widgets android par défaut (Button, ProgressBar). À un certain point, dans le contrôle personnalisé, je veux communiquer avec la vue qui contient le contrôle personnalisé. Par exemple, je veux passer la valeur actuelle du ProgressBar ou une valeur du bouton. Quelle est la meilleure approche? Est-il possible de créer un événement personnalisé (comme le "onClick") et ensuite avoir dans la classe conteneur un gestionnaire? Ou il y a une meilleure approche? Merci d'avance! ;)Communication entre une vue personnalisée intégrée dans une vue

+1

Vous pouvez utiliser 'View.getParent()' - il obtient le parent de cette vue, puis l'appelle smth. Cependant, la question semble un peu étrange pour moi .. –

Répondre

0

Si le "un point" est lorsqu'un événement se produit (comme lorsque vous appuyez sur le bouton), vous pouvez créer une interface d'écouteur d'événements.

l'intérieur d'une vue personnalisée de la mienne je mets ceci:

private OnFlingListener flingListener; 

    // my event listener interface 
    public interface OnFlingListener { 
     public abstract boolean onFling(View v, int direction); 
    } 

    public void setOnFlingListener(OnFlingListener l) { 
     flingListener = l; 
    } 

    // ........my custom view code....... 

    // event handling now 
    private void flingRight() { 
     if(flingListener != null) { 
      if(flingListener.onFling(this, FLING_TO_RIGHT)) 
       showPrevious(); 
     } else { 
      showPrevious(); 
     } 
    } 

cette façon, je peux mettre en œuvre OnFlingListener comme je le ferais avec OnClickListener.

EDIT:

mes onFling retourne un booléen parce que je voulais décider là-dedans si d'accepter ou d'annuler l'événement (voir flingRight()). Il pourrait également retourner le vide.

Questions connexes