Beiträge von matthias


    Ich hätts mal so probiert. Du hast ja bereits das Objekt selbst und List.remove(object) müsste eigentlich genau das Objekt auch finden.




    Aber irgendwie kommt mir der Aufbau generell etwas seltsam vor ... das ganze in der getView machen, die wird ja mehrfach aufgerufen. Ich stell mir die Frage ob er evtl. schon im nächsten getView steckt, während der OnClickListener in einem eigenen Thread läuft und verhaut deshalb die Position .... probier den Code oben mal aus, vll. fruchtet es ja.



    Gruß,
    matze

    Hoi,


    hast du die Klasse und variablen zwischenzeitlich umbenannt oder hast du den falschen Adapter erwischt? Irgendwie bin ich etwas verwirrt ^^


    Ich denk das mal "laut" durch:
    Also du hast einen Adapter, da sind 5 Elemente drin. Du löschst das 2. Element also position ist 1. Rufst also die .remove auf, der wirft das 2. Element weg. Jetzt müsste eigentlich adressList.get(position) das ursprünglich 3. Element in der Liste liefern. Tut er das? Debug das mal. Änder auch mal zum Test dein List in ArrayList.


    Gruß,
    Matze

    Hoi,



    adressList.remove(position);


    Von welchem Datentyp ist dein adressList denn eigentlich? Eine ArrayList rutscht ja die nachfolgenden Einträge immer nach, sobald du in der Mitte eins raus nimmst. Dann müsste die position eig. auch der Index des richtigen Elements sein ... oder raff ich grad nicht, was du meinst ^^



    Gruß,
    matze

    Hoi,


    hab das jetzt soweit durch. Hab im Netz eine VerticalTextView gefunden und mir noch einen VerticalButton gebaut ...




    Sorgt halt für allgemeine Verwirrung und etwas Experimentierfreude, wenn man die Views dann anordnen will, da Gravity.CENTER_HORIZONTAL nicht horizontal sondern vertikal ist etc ^^


    Aufpassen sollte man auch, wenn man diese Views in ein LinearLayout hängt, dass man später noch für "normale Dinge" verwenden will. Das verkraftet diesen Horizontal-Vertikal-Wechsel nämlich nicht und ist dann dauerhaft vertauscht ... Also diese Vertical-Elemente am besten nochmal in ein eigenes Layout kippen, das man dann einfach removen kann.



    Gruß,
    matze

    Hoi,


    schau dir nochmal das an -> Java Umgebungsvariablen einstellen unter Windows 7


    Hab so das Gefühl er kennt zwar jetzt Java, will aber explizit die Variable "JAVA_HOME" auch wissen ... sollte das auch nicht helfen, versuch mal ganz billig bei deinem Befehl einfach -Djava.home="/dein/pfad" dran zu hängen oder so.


    Kenn mich mit der Windows-Konsole nicht wirklich aus, bin da ziemlich eingerostet, aber wenn du deinen Build-Befehl eh so direkt dort eingibst, kannst du nichtmal sowas wie das hier versuchen:

    Code
    JAVA_HOME=/my/java/home
    echo $JAVA_HOME
    gradlew clean build


    ? Also für diese Konsolen-Sitzung die Variable setzen, gucken obs auch tatsächlich drin steht, dann Befehl ausführen.



    Gruß,
    matze

    Hoi Lucas,


    joa, wenn ich ne extra Activity starte ist das unproblematisch. Allerdings hab ich als Vorlage eine iOS App, die ich möglichst 1:1 nachbauen darf.
    Die hat das so direkt integriert und zeigt die Preview an, während die Restlichen Menü-Buttons, Banner etc. alle noch im Portrait sind. Die zur Preview gehörenden Buttons zeigt er auch im Landscape, also zum aufnehmen und stoppen etc. ...


    Vielleicht find ich noch was, ansonsten werd ich wohl eine eigene Activity starten müssen.



    Gruß,
    matze

    Hoi,


    glaub ich hab grad nen kleinen Denkfehler oder irgend nen hau drin, deshalb bitte ich euch mal zur hilfe:


    Hab eine App, die die Ausrichtung Portrait hat und auch so behalten soll. meine Buttons tauschen nur den Inhalt meines LinearLayouts aus, das für den Content eben bestimmt ist.
    Nun, schön, da soll jetzt eine Camera Preview rein, also ein FrameLayout, das eine SurfaceView enthält. Das Ding soll jetzt aber im Landscape sein. Mit

    Java
    camera.setDisplayOrientation(90);


    dreht es sich zwar, allerdings dreht es sich weiter, wenn ich das Handy dann neige. Also ich bin dann egal wie gehalten immer um 90° nach links gedreht ...


    Nun meine Frage, kann ich irgendwie dem FrameLayout schon sagen "du zeigst im Landscape an"? Alternativ, wie setze ich das um, was ich will? Soll auch noch paar Buttons anzeigen, die bei einer ansonsten Portrait App dann im Landscape sind ....



    Gruß,
    matze

    Hoi,


    eigentlich reicht es der ImageView "adjustViewBounds" auf true zu setzen. Dann hält er das Seitenverhältnis ein und schneidet nichts ab. Zu großes verkleinert er, zu kleines skaliert er hoch. Damit es auf ganz großen Displays nicht zu schrecklich aussieht sollte man das Bild in verschiedenen Auflösungen in die jeweiligen Ordner parken.


    Ist das Bild zu groß und muss sehr stark skaliert werden, kanns dir aber auch sehr gerne passieren, dass dir eine OutOfMemory um die Ohren fliegt ... in dem Fall müsste man überlegen abhängig der Bildschirmgröße vorher in einem separaten AsyncTask das Bild runter zu rechnen und vll. via BitmapFactory die Qualität herunter setzen und etwas komprimieren.



    Gruß,
    matze

    Hoi,


    hmm, da es ja um Termine geht würd ich entweder mal schaun, ob so ein Google Kalender leicht eingebunden werden kann oder alternativ einen RSS-Feed zweckentfremden.


    So einen RSS-Feed bekommt man in relativ billig mit Wordpress. Installation dauert 5 min, ne Kategorie anlegen und dann einfach stinknormale Artikel schreiben, die man halt irgendwo sinnig und einheitlich aufbauen sollte.


    Den Feed gibts in fertig oder du baust dir ein Plugin, das via PHP was eigenes zam steckt.


    Ist jetzt vll etwas unkonventionell gedacht aber Wordpress ist einfach, so ein Webserver is entweder schon existent oder kostet unter 5€ und RSS-Feeds verwursten ist jetzt auch kein Akt. Die Meldungen kann man hübsch gestalten wie man will und man kann sehr sehr individuell alle Informationen einfach in den post_content schreiben.



    Gruß,
    matze

    Hoi,


    dein CustomAdapter müsste ja eigentlich eine Liste/Array mit deinen Objekten haben. Ich würd den Adapter ein "removeItem" spendieren und beim Löschen aus der DB das Item auch aus der Liste kicken. Dann musst du die DB nicht erneut behelligen. Evtl. muss ma dann noch ein invokeChanged Event (weiß grad nich wie genau es heißt) anstoßen.



    Gruß,
    matze

    Hoi,


    da will man sich ein cron.weekly script basteln, dass das Android SDK updated und woran scheitert es ...

    Bash
    #!/bin/bash
    android update sdk --all --no-ui



    Keine Option die Lizenzen automatisch mit "y" zu beantworten -.-
    Da es je nach Update verschiedene Lizenzen sind, kann man auch kein

    Code
    echo "y" | android update sdk --all --no-ui


    machen *grml*


    Gruß,
    matze

    Hoi,


    sorry, wenn ich dich etwas erschlagen hab mit PHP-Scripten etc ;) mir fällt es leicht und ich find es bis dato gut gelöst, deshalb hab ichs dir mal vorgeschlagen.


    Zum Anderen:


    Besser wäre es natürlich wenn der App Bescheid gegeben würde, wenn Datensätze in der Datenbank geändert wurden.


    Könnte man jetzt am Ende des Scripts oder des Mechanismus, mit dem du da neue Daten rein schreibst eine Push-Notification senden. Die schlägt auf deinem Receiver auf, du zeigst keine Notification an sondern pullst dir daraufhin neue Daten. Also Server sendet "hol dir updates" und die Clients gehorchen ^^
    Wär dann C2DM, ist was für später mal, wenn dein erstes Test-Szenario steht. Ich hab mich mit Push-Notifications etwas schwer getan und seit einem Jahr nicht mehr berührt ... vll. hat sich das schon etwas gebessert.



    Gruß,
    matze

    Hoi,


    ich persönlich finde folgenden Weg sinnvoll/gut:


    Ich stelle vom Android-Device aus eine Anfrage an ein PHP-Formular, das auf meinem Server mit Apache2 und PHP5 liegt. Das Formular holt sich Daten aus der MySQL Datenbank. Die Datenbank sollte nicht von aussen, also öffentlich, zugreifbar sein. (bind-address)
    Das Formular verarbeitet die Daten bzw. packt sie in ein brauchbares Format wie z.b. JSON und schickt sie als Antwort ans Android-Device. Das Android-Device verwurstet die Daten und speichert sich mal pauschal alles in einer SQLite DB zwischen.
    Gearbeitet wird dann lokal mit der SQLite Datenbank.


    Hat den Vorteil, dass du deine MySQL Datenbank nicht öffentlich und angreifbar im Netz stehen hast. Es werden nicht zich Connections geöffnet, weil die Clients (Android-Devices) direkt auf die DB wollen und du kannst dein PHP-Script auch noch mit .htaccess und .htpasswd steuern und absichern. Auch umgehst du unschöne Dinge wie nicht sauber geschlossene Connections, wenn die Android-Devices aufgrund von Netzschwankungen die Verbindung verlieren.


    Lokales Zwischenspeichern finde ich wichtig, da der Benutzer dann im Falle Offline trotzdem noch ein paar Daten hat, wenn auch nicht die Aktuellsten. Besser als eine komplett leere App ohne jeglichen Inhalt.



    Zum grundsätzlichen Verständnis MySQL und SQLite:


    SQLite ist dafür ausgelegt, lokal für einen Benutzer eine Datenbank zur Verfügung zu stellen, ohne dass dieser erstmal einen MySQL Server installieren muss. Du kannst also Anwendungen direkt mit Datenbank ausliefern und musst nicht erst Einrichtungsaufwand bzgl. Datenbank leisten. Das ganze wird natürlich sinnlos, wenn du das alles nicht lokal für nur einen Benutzer willst sondern eben für mehrere Benutzer zentral. Dann brauchst du einen richtigen Datenbank-Server.


    Anstatt "MySQL" kannst du natürlich auch Alternativen, wie von Lucas genannt, verwenden. Ich persönlich bin mit MySQL aber sehr zufrieden, weshalb ich noch nicht zu anderen DB-Servern gegriffen habe.



    Gruß,
    matze