viele seekbars > Change Listener >

  • Hallo
    wieder mal eine Frage an die Profis.
    ich habe mehrer Seekbars
    Diese unterscheiden sich im "text" nur durch eine Zahl
    seekbar1SideSpin,seekbar2SideSpin,seekbar3SideSpin ....
    Muss ich nun für z.B.10 seekbars 10 change Listener mit fast gleichen den Code (bis auf die Zahl der seekbar) schreiben (natürlich geht copy paste) oder gibt es eine Möglichkeit das Ganze einfacher zu gestalten.
    Ich meine damit, dass ich bei einer Änderung die dann immer alle betrifft nicht alle 10 einzeln ändern muss sondern nur einen der dann alle gleichzeitig betrifft.
    Ich hoffe das meine Beschreibung verständlich war.
    Gruß

  • Hallo z.B. in den du eine innerere kalasse erstellst.




  • Danke für die Antwort
    also das mit der class hab ich mehr oder weniger verstanden. Den aufruf Seekbar1SideSpin---(New klikListe()) auch.
    Das hab ich jetzt auch schon mal ausprobiert.
    Was ich aber nicht verstehe ist
    klikListe() {}. Wie bekomme ich denn da Werte hinein bzw. wie ruf ich das auf.
    Ich hab das schon einiges rumprobiert.
    Entschuldige, aber da fehlt mir warscheinlich noch etwas Grundwissen.
    Kannst du mir dazu bitte bitte ein Beispiel zeigen.


    Gruß

  • Dies ist der Konstrucktor der Klasse. Der wird bei der Initialisierung aufgerufen. Also in dem Moment wo du mit " new " eine Instanz erstellst. Da der listner als Interface implementiert wird müssten die drei Methoden auch wie gewohnt aufgerufen weden eine fallunterscheidung also vom welcher seekbar der Aufruf kommt. Musst du natürlich noch machen.
    Der konstuktor wird meistens zum voreinstellen von Variablen benutzt .


    int progressChangedValue; im klassenrumpf
    progressChangedValue=0; im Konstrucktor


    Den Code für die drei Methoden hast du ja schon.

  • Vielen Vielen Dank
    hab wieder was dazu gelernt
    Nun funktioniert es.


    Gruß
    herrm_no


  • ja in etwa so .

  • Super, das war zwar nicht das was ich gemeint habe, aber so konnte ich es auch umsetzen.


    :thumbup: :thumbup: :thumbup: :thumbup:



    Meine Frage wäre gewesen,
    ob ich direkt beim Aufruf noch einen integer Wert z.B. intValue übergeben kann und wie ich diesen in der Class aufrufe/verwende.
    Wenn du mir das bitte auch noch zeigen könntest, dann hätte meine "Suche" :whistling: endlich ein Ende.

    Code
    seekbar1SideSpin.setOnSeekBarChangeListener(new klikListe(1), new intValue);
  • nein so dürfte es nicht gehen. Denn die Metohde "setOnSeekBarChangeListener(...)" erwartet nur einen Parameter.


    Du könnstes dir ein neues Interface schreiben und das benutzen ^^
    oder noch besser eine neue Seekbar. 8o



  • Wieso Schade? Den "int" in der Klick-Kalssse zu übergeben ist doch das selbe. Im Konstucktor wird er der Globalen "flag" Variablen übergeben und ist in allen drei Methoden verfügbar.



    seekbar1SideSpin.setOnSeekBarChangeListener(new klikListe(intVallute));
    ist doch das selbe, wie dein Versuch einen zusetzlichen Parameter zu übergen.
    seekbar1SideSpin.setOnSeekBarChangeListener(new klikListe(), new intValue);


    Was soll das überhaupt mit dem "new intValute"? Eine "int" Variable gehört zu den Primitiven Datentypen die werden nicht mit "new" Initialisirt. Aber wie gesagt die Methote erwartet nur ein Objekt und nicht zwei. Deshalb Kapselt man das in eine Klasse und übergiet dieses Objekt.




    das mit der "1" und der "2" in den Klammern sind Beispiele, habe den int wert somit gleich fest übergeben und nicht in einer Variablen. Dachte das wäre klar gewesen.


    Wenn du einen neuen Datentyp oder Klasse übergeben willst, geht das natürlich genauso. Dann musst du den Konstruktor ändern.


    Bei deiner Variante hätte eigentlich schon im Compiler eine Fehlermeldung kommen müssen.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!