Liste benutzen um neue Activitys zu starten

  • Hallo,
    ich sitze gerade an meiner erste App dran und ich komme einfach nicht mehr weiter.
    Man muss sich die Liste(String Array) wie Kategorien vorstellen - Pizza, Salat, Pasta, Getränke ect.
    Wenn man auf eine Kategorie wie Pizza klickt, soll eine eine neue Activity bzw. Seite gestartet werden.
    Ich bin schonmal soweit, dass es überhaupt eine neue Activity startet aber mein Problem ist jetzt das er immer nur die eine startet. Wie kann ich ihn jetzt sagen, dass er die Kategorie starten soll, die angeklickt würde?


    Ich dachte, ich mach das über eine For-Schleife, die eine If-Abfrage in sich hat aber wenn ich 100 Kategorien habe ist es nicht besonders effizient es so zu machen.


    Ich hoffe ihr könnt mir weiter helfen.


    mfg
    Hero

  • Kommt drauf an - wenn du dieselbe Activity für alle deine Sachen aufrufen willst, dann musst du im Intent einfach einen Parameter mitgeben (hast du int position im Listener-Aufruf, sonst was anderes benutzen):

    Java
    intent.putExtra("Speisebezeichnung", position);


    Und in der zweiten Activity wieder auslesen:

    Java
    Intent i = getIntent();
    int position = i.getIntExtra("Speisebezeichnung", -1);


    Wahrscheinlich willst du aber nicht die Position in der Liste sondern einen String übergeben - aber das hängt davon ab, was du genau implementierst.


    Wenn du aber mehrere verschiedene Activities aufrufen willst, dann musst du dir überlegen, wie du die Zuordnung zwischen Listenposition und den jeweiligen Activities speicherst und dann in einer if- oder case-Struktur auswerten.

  • Danke für deine schnelle Antwort :)
    Ja ich möchte mehrere Activitys starten, halt eine pro Kategorie.


    switch-case ist eine gute Idee wobei mir auch gerade eine Idee eingefallen ist als ich folgenden Code gelesen hatte:

    Java
    Toast.makeText(getApplicationContext(), ((TextView) view).getText(),	 Toast.LENGTH_SHORT).show();



    Der Code gibt am Bildschirm, die angeklickte Kategorie als Text aus. Kann ich jetzt irgendwie den Text in einen String umwandeln? Wenn es geht, kann ich nämlich über:

    Java
    Intent i = new Intent(); i.setClassName("com.package.name", "com.package.name."+*angeklickte Kategorie* );


    die Activity aufrufen

  • OK Titus - aber dann sag auch, warum das so funktioniert... *g*


    Bei der Addition mir einem leeren String vor dem Plus-Zeichen wird die String-Addition aktiviert, d.h. für das nachfolgende Objekt wird (falls nötig) die Methode toString() aufgerufen.


    Eigentlich heißt das nämlich:

    Java
    String tmp = TextView.getText().toString();


    nur sind das mehr Buchstaben - aber eine Addition weniger. O:-)


    Und ein guter Grund, um in eigenen Klassen immer eine toString()-Methode zu implementieren, dann kann man nämlich einfache String-Additionen bei eigenen Objekten machen, ohne immer toString() schreiben zu müssen.

  • Du kannst eine Activity auch direkt über einen neuen Intent aufrufen.

    Java
    Intent pizzaIntent = new Intent(this, PizzaActivity.class);
        	startActivity(pizzaIntent);


    Solange deine Liste nicht variabel gestaltet ist, also der Nutzer nichts selbst hinzufügen kann, sollte das auch gehen.

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

Jetzt mitmachen!

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