2011-01-03 20 views
0

Ich habe einige erweiterte UI-Steuerelemente basierend auf den Standard-Android-Widgets (Button, ProgressBar) erstellt. Zu einem bestimmten Zeitpunkt möchte ich im benutzerdefinierten Steuerelement mit der Ansicht kommunizieren, die das benutzerdefinierte Steuerelement enthält. Zum Beispiel möchte ich den aktuellen Wert der ProgressBar oder einen Wert von der Schaltfläche übergeben. Was ist der beste Ansatz? Ist es möglich, ein benutzerdefiniertes Ereignis (wie das "onClick") zu erstellen und dann in der Container-Klasse einen Handler zu haben? Oder gibt es einen besseren Ansatz? Vielen Dank im Voraus! ;)Kommunikation zwischen einer benutzerdefinierten Ansicht in einer Ansicht eingebettet

+1

Sie können 'View.getParent()' verwenden - es ruft das übergeordnete Element dieser Ansicht ab und ruft dann etw darauf auf. Allerdings klingt die Frage für mich etwas seltsam. –

Antwort

0

Wenn der "Irgendein Punkt" ist, wenn ein Ereignis eintritt (wie wenn Sie die Taste drücken), können Sie eine Ereignis-Listener-Schnittstelle erstellen.

Innerhalb einer benutzerdefinierten Ansicht von mir Ich habe dies:

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(); 
     } 
    } 

auf diese Weise ich OnFlingListener umsetzen kann, wie ich mit OnClickListener tun würde.

EDIT:

mein onFling gibt einen Booleschen weil ich dort entscheiden wollte, ob das Ereignis zu akzeptieren oder abzubrechen (siehe flingRight()). Es könnte auch ungültig werden.

Verwandte Themen