Benutzereingabe und Website aufrufen

  • Hi Leute,
    ich möchte mich garnicht groß mit der Android Entwicklung beschäftigen, das habe ich heute schon 6 Stunden lang getan.
    unsere Uni bietet eine .jar an, in der der jeweilige Student seine Daten eintragen kann und dann seinen aktuellen Stundenplan vor sich sieht und was er so demnächst zu tun hab.
    Leider bekomm ichs nicht zum laufen und diverse Konvertierungsprogramme bzw java runtime fangen lediglich an sinnlose sms zu verschicken-.-


    Da ich zu faul bin jedesmal im Browser meines Handys auszuwählen welche Seminargruppe ich bin etc und dann den Stundenplan angezeigt zu bekommen, habe ich mir den Stundenplan als Lesezeichen gespeichert, wobei ich jede Woche die wochennummer aktualisieren muss.
    Der Link ist so aufgebaut:
    http://uniwebseite.de/stundenp…eminargruppe=abc&woche=54
    Nun muss ich halt jede Woche das Lesezeichen aktualisieren....


    Da kam mir die Idee, dass es doch nicht so schwer sein kann eine App zu schreiben, in der der Benutzer die aktuelle woche eingibt(eventuell sogar immer die letzte eingabe gespeichert) und pre klick auf go der link aufgerufen wird.
    z.b. wenn ich eine 54 eingebe der Link von oben im Browser aufgerufen wird und mir der Stundenplan angezeigt.


    In java bin ich relativ fit, aber das hat mich dann doch überfordert, zumal ich nicht so viel zeit reinstecken möchte das alles zu lernen, wenn ichs eh nicht brauche, außer halt dafür..


    Nun meine Frage:
    Ist das einfach zu realisieren und wenn ja, wäre jemand so lieb mir passenden Code zu posten? das design bekomm ich dann selber auf die Reihe. lediglich die Benutzereingabe und das Aufrufen der Seite per klick auf nen Button.
    Für einen Profi ist das sicherlich in 5 min erledigt :)
    Danke schonmal
    Liebe Grüße

  • Hmm also wenn du weisst wie du mit Eclipse, ein kleines Design zusammenklickerst dann hilf dir das sicherlich als Grundgerüst.
    Hat jetzt nur 5 minuten gedauert. Einfach einen Edittext und einen Button ins Design ziehen. / Url anpassen und ab gehts
    Wichtig die Permissions im Manifest auf Internet setzen.




    tja bei 5min gibt es noch keine Fehlerabfrage, das müsstest du selber bauen.


    lg
    phil

  • Ich glaube ich hab das alles sehr verwirrend dargestellt, hier nochmal die entwirrte Fassung:
    Ich möchte, dass wenn jemand beim Spinner s1 etwas auswählt, der spinner s2 aktualisiert wird.
    wie man den 2. spinner verändert weiß ich, aber ich seh bei dem Listener nicht durch.
    Kann mit bitte jemand ein Code schnipsel posten, das nach der auswahl von s1 code ausführt.
    so nach dem motto:
    onItemSelected(s1){
    CODE#,
    }
    danke :)

  • Zitat

    Danke für deinen Quelltext, er hat mir sehr geholfen

    Bitte :)


    Ok nun zu deinem anderen Problem hier mal wieder etwas Source als Denkansatz, ich habe nur den Listener für den ersten Spinner implementiert (der 2te wäre analog)


    -> EInfach 2 Spinner eingefügt spinner1 / spinner 2


    Mein Kopf der Klasse, kennste noch von gestern

    Code
    public class WplanActivity extends Activity {
    	
    	private static Spinner spinner2;
    	private static ArrayAdapter<String> unteradapter;
    	private Context context;
    
    
    	final String[] spinner_items_u1 = {"Z1Unter1","Z1Unter2","Z1Unter3"};
    	final String[] spinner_items_u2 = {"Z2Unter1","Z2Unter2","Z2Unter3"};
    	final String[] spinner_items_u3 = {"Z3Unter1","Z3Unter2","Z3Unter3"};


    in die onCreate Methode kommt das noch mit rein




    und das noch in die selbe Klasse
    (sehe gerade die If/else kannst bestimmt noch optimieren, aber so geht es erstmal)




    So das sollte Dir die Augen etwas öfnen,
    ich hab die Spinner mal mit Stringsbefüllt, natürlich kannst du xml aus den Resourcen nehmen, oder was auch immer.


    der phil

  • woah danke für die Mühe :)


    Ich wollte die 2. Einträge eigentlich alle über xml machen, aber wenn ich in die ganzen if-anweisungen statt ArrayAdapter ...=new ArrayAdapter(etc)
    ArrayAdapter.createFromResource nehme, bekomme ich einen Fehler. Irgendwie war es mir auch nicht möglich die außerhalb der klasse zu deklarieren-.-


    Nun friemel ich noch bisschen rum. Wäre kuhl wenn du mir noch die eine Frage beantworten könntest.


    Eh ich hab mit nem Code Schnipsel gerechnet^^
    Danke auf jeden Fall für die Mühe!!!!!



    //edit und aus 1 werden 2^^


    wenn ich das jetzt noch hinbekommen würde, dass immer, sobald ich auf den "go-button" drück, die eingetragenen werte (also studiengang und seminargruppe) irgendwie gespeichert werden, sodass ich beim nächsten start der app diese direkt als standard verwenden kann, wäre das noch saustark :)


    ich habs jetzt hinbekommen, dass die daten in preferences gespeichert werden. allerdings als string.
    nun muss ich jeden möglichen wert(string) abprüfen und mit spinner.setSelection(int) setzen.
    da es ja keine switch-case anweisungen für strings gibt, muss ich das alles in if-schleifen machen.
    bei 20 studiengängen a la 6 seminargruppen sind das satte 180 if-anweisungen für den spinner2 und 20 für spinner 1
    geht das irgendwie professioneller?
    Ich überlege gerade das mit ner Checkbox zu machen. wenn die angeklickt ist, werden die gespeicherten Daten geladen....


    aber geht das nicht professioneller? xD



    liebste grüße

  • ich hab das jetzt so gelöst, dass automatisch beim start die CheckBox gechecked ist und die gespeicherten daten nimmt, sobald man etwas anderes auswählt, verschwindet das Häkchen und das ausgewählte wird genommen. Sicherlich nicht die edelste Lösung, aber funktioniert.
    Nun hab ich eigentlich nur noch das Problem, dass ichs einfach nicht hinbekomme die Spinner-items per xmp reinzubekommen. createFromResource will er einfach nicht annehmen-.-
    lg

  • Zitat

    ich habs jetzt hinbekommen, dass die daten in preferences gespeichert werden. allerdings als string.


    Wieso als String, du kannst doch einfach die Positionen deiner Spinner speichern und wieder setzen.



    In meinem Listener siehst du ja wie ich an die Position des Spinners komme,



    Code
    String auswahl = parent.getItemAtPosition(pos).toString();     
    
    
    if (auswahl.equalsIgnoreCase("Zeile1")) {


    Um den Quatsch nur als Int zu haben, brauche ich ja nur "pos" aus der Funktionsübergabe zu speichern, das ist ja ein Int.


    Und SHaredprefs kann auch int speichern bzw. lesen



    Code
    SharedPreferences p = context.getSharedPreferences("SpinnerPrefs", MODE_WORLD_READABLE);
        	meinePos = p.getInt("spinner_kader", 0);


    bzw. analog dazu


    Code
    p.putInt(MeinWert)




    Hmm mit dem Createresource kann ich mir gerade nicht zusammenreihmen, weil ob du das als string definierts oder die Resource nimmst ist eigentlich fast dasselbe. Zeigt doch mal den Code, bzw den Fehler den er wirft, dann lässt sich das besser eingrenzen.


    der phil

  • so, da bin ich wieder :)
    in meiner hauptklasse habe ich-wie du mir sagtest- eine weitere klasse public class Raum_SelectedListener implements OnItemSelectedListener {
    erstellt. darin sind die ganzen if-anweisungen, was passiert wenn welche auswahl gestroffen wird (adapter soll erstellt werden und 2. spinner den adapter zugewiesen bekommen) abgespeckt sieht der code so aus:


    wobei xyz ein array ist, das die möglichen seminargruppen enthält.
    in R.java ist im abschnitt array dieser xyz eintrag auch zu finden.


    der Fehler, wenn ich mit der Maus über den rot unterwellten Text(die komplette zeile mit dem adapter) fahre, ist:
    The constructor ArrayAdapter(context, int, view) is undefined.
    ein Vorschlag von Eclipse ist (List) davorzuschreiben
    Danach gibts auch keine Fehler mehr, wähle ich allerdings den entsprechenden Spinnereintrag, schmiert die App ab.
    Laut der Fehlermeldung muss das 3. argument ja ein View sein. findViewById liefert doch aber einen View zurück, wieso will er das dann zu "List" casten?
    deklariere ich allerdings im Quelltext selber final String[] xyz={"...", ".."}; und nehme nur xyz als 3. argument, gibts keine Fehler -.-
    Hilfe bitte :)


    ps: ich musste grad schmunzeln als ich meinen 1. Foreneintrag hier gelesen habe:

    Zitat

    Hi Leute,
    ich möchte mich garnicht groß mit der Android Entwicklung beschäftigen,

    Liebe Grüße


    //edit:
    ich hab gerade mal das findViewById weggelassen. nun gibts keine Fehler, die App schmiert auch nicht ab, aber der 2. Spinner ist einfach leer, sobald ich den entsprechenden Eintrag im 1. auswähle :(
    Und bei g.getInt() geht er mit, aber bei p.putInt() schlägt er mir einen Cast zu (Object) vor -.-

  • Aha ah ah, kleiner Denkfehler


    du weisst doch das du immer 2 Spinner hast.


    Ich würde für beide einen Adapter erschaffen - der erste Spinner ist fix und kann gleich mit Daten gefüllt werden.
    Den 2ten befüllst du in deinen Listener, das ist ok so.


    Momentan erschaffst du bei jedem Wechel einen neuen Adapter. Das brauchst du nicht.
    Einfach nur die Daten des Adapters ändern und notifyDataSetChanged() aufrufen.


    Unten die Variante,welche ich gepostet hatte war ja unoptimiert und nur ein Beispiel:


    ArrayAdapter<String> unteradapter = new ArrayAdapter<String>(context, android.R.layout.simple_spinner_item, spinner_items_u1); unteradapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner2.setAdapter(unteradapter);


    besser wäre es, den ganzen quatsch im onCreate mit reinzupacken.


    und in deinem Listener die


    spinner_items_u1 = neue Werte zu setzen;
    spinner.notifyDataSetChanged();


    aufrufen, und schon hast du die neuen Werte.

  • jo danke, ich habs jetzt irgendwie schon hinbekommen.
    wenn du willst kann ich dir ja mal den quelltext zuschicken und du kannst dir die Früchte unserer Arbeit anschauen :)
    allerdings hab ich noch ein Problem.
    wenn ich bei nem motorola(kA welches modell) mit android 2.1(das projekt ist auf android 2.1 gemacht). den spinner öffne, werden mir nur weiße einträge angezeigt und erst beim klick auf diese, erscheint der Eintrag, solang man draufklickt. lässt man los, verschwindert er wieder..-.-
    mit setdropdownDingens hab ichs hinbekommen. Die EInträge haben jetzt auch nen schönen grünen knubbel zum selektieren daneben.
    aber ich hab einzelne einträge, wie z.b. Fakultät informatik.
    das soll zur abgrenzung/überschrift der einzelnen studiengänge dienen nd selber nicht auswählbar sein.
    bis jetzt kann man es auswählen, aber dann gibts nur die seminargruppe "-"
    Geht das irgendwelche items in dem string-array als nicht auswählbar zu definieren bzw im spinner noch was dickes nicht auswählbares reinzuladen?


    Ich denke danach wars das vorerst mit Fragen :)

Jetzt mitmachen!

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