Eigenen Listener einbauen

henlo

Neues Mitglied
Hallo liebes Forum,

wie ihr bereits gelesen habt habe ich folgendes Problem:

Ich möchte in einer beliebigen Klasse von mir, mein eigenes Interface implementieren.

Das eigene Interface habe ich bereits geschrieben. So mein Problem ist jetzt, dass ich möchte, dass es auf bestimmte Events hört welche ich in einer anderen Klasse festgelegt habe und aus dieser heraus dann praktisch die Methoden aus dem Interface aufgerufen werden wenn halt das passende Event auftritt.

Wie bekomme ich das jetzt hin das ich in der "beliebigen Klasse" nur noch die Methoden implementieren muss. Und die Methoden dann "automatisch aufgerufen werden.

Ich hoffe das war verständlich und danke schon einmal im vorraus!

lg
[highlight=java]public interface UnserTouchGestureListener{


public void nachRechtsGewischt();

public void nachLinksGewischt();

public void nachObenGewischt();

public void nachUntenGewischt();

public void zusammenGepinched();

public void auseinaderGepinched();

public void langeGedrueckt();

public void einfachGedrueckt();



}
[/highlight]

Java:
public class AllgemeinerListener implements OnGestureListener{
	
	UnserTouchGestureListener objekt;  																		// Steht null drin muss nachschauen wie man ein Objekt aus dem Interface erstellt
		
	@Override
	public boolean onScroll(MotionEvent start, MotionEvent finish, float distanceX,
			float distanceY) {
		// TODO Auto-generated method stub
		
		if(start.getRawX() < finish.getRawX() && distanceX >= 50 && distanceY < 50){
			
			objekt.nachRechtsGewischt();
			//nach rechts geswiped
			
			
		}
		
		if(start.getRawX() > finish.getRawX() && distanceX >= 50 && distanceY < 50){
			
			//nach links geswiped
			
			
		}
		return false;
	}

	@Override
	public void onShowPress(MotionEvent e) {
		// TODO Auto-generated method stub

	}

	@Override
	public boolean onSingleTapUp(MotionEvent e) {
		// TODO Auto-generated method stub
		return false;
	}
	
//	public boolean onTouchEvent(MotionEvent me) { 
//		
//		return gDetector.onTouchEvent(me); 					//Context überprüfen zum weiterareiten
//		
//	}

	@Override
	public boolean onDown(MotionEvent e) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
			float velocityY) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public void onLongPress(MotionEvent e) {
		// TODO Auto-generated method stub
		
	}

}

Das ist der Code zu den Klassen, oben das Interface und unten die Klasse welche die Events verarbeitet und dann die Methoden aus dem Interface aufrufen soll.
 
Zuletzt bearbeitet von einem Moderator:
Im zweiten Listing fehlt noch ein setter, mit dem Du das
Code:
objekt
(den Namen hätte ich nicht besser wählen können :lol🙂 vom "interessierten Objekt" aus setzen kannst.

Mit der aktuellen Implementierung kannst Du natürlich immer nur einen Listener gleichzeitig haben, also der zweite verdrängt des ersten...

bye
TT
 
Also du meinst dann sowas wie:


Java:
public void setmeinListener(objekt){


}

in der AllgeinerListener Klasse? Oder verstehe ich was falsch? 🙂
 
vllt. habe ich was missverstanden aber evtl. hilft dir diese kleine Darstellung welche ich hier (Bitbucket Code) hingelegt habe.

Main < Start < Löst Funktion des Controllers aus
Controller < Listener Verwalter < Nach Auslösung einer Funktion benachrichtigung der Listener
Listener < Funktionen
 
Die genannte Klasse muss halt schon dein Interface implementieren!
Dann musst du in dieser Klasse alle Methoden des Interface reinpacken, an welcher stelle ist dir überlassen.
Zudem musst du eine Instanz des Interface erstellen mit dem new Operator.
Dein "objekt", wie du es genannt hast, ist noch nicht kreiirt

Ich hoffe das hilft dir weiter!
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben