Beiträge von Funtik

    Sorry da kenn ich leider nichts. Hab mir das Tutorial angeschaut das Lucas gepostet hat. Glaube jedenfalls dass es das war.
    Habe es aber nicht zuende gemacht, nebenbei immer geschaut, wie ListView Cursor und CursorAdapter zusammenarbeiten, wie man sich nen eigenen Adapter baut und wie man die SQLite DB in einen ContentProvider "verpackt"


    eigener Cursor Adapter wird in deinem Fall wohl auch nötig sein... ich finde deine App bzw. dein Vorhaben hat mittlerweile ein Level erreicht, in dem das einfache kopieren aus Codeschnitpseln nicht mehr ausreicht, weil man alles an eigene Bedürfnisse anpassen muss. Dafür muss man schon verstehen, wie die einzelnen Dinge in Android laufen.


    Ich bin da nicht drum rum gekommen..

    vielleicht kann man dir ja auch hier helfen... gut wäre dafür aber zu wissen, welche Kenntnisse du schon hast in Bereichen:


    - SQLite DB in Android
    - ContentProvider
    - ListView
    - CursorAdapter


    Das sind jedenfalls die Dinge, die ich bei mir gebraucht habe. Codeschnipsel werden ohne Erklärung nicht viel bringen, da es doch recht viel ist. Schriftlich zu erklären wird kompliziert und zeitaufwändig


    und was du bereits in deiner App hast, also SQLite DB und Activitys wo die Daten schon eingegeben und gespeichert werden oder so müsste man auch wissen um nicht unnötig drum herum zu reden..

    Hab selten gewählt. Da ich beim ersten Spielen meistens die Musik an habe. Bis ich dann irgendwo spiele, wo andere dabei sind, die es stören könnte.
    Da ich beim ersten Spielen die Sounds schon gehört habe, kann ich mir ja vorstellen wie es klingt. Das passiert unterbewusst... Ein Spiel ganz ohne Musik finde ich aber auch in Ordnung... könnte aber etwas "trocken" rüber kommen.


    Wenn die Sounds gut sind, empfehle ich auch zu warten. Der Erste Eindruck ist wichtig. Auch bei sowas.... es sei denn das Spiel ist so überaus super duper toll, dass man es nicht mal wahrnimmt, dass die Sounds fehlen ;)

    die ListView bzw. der Adapter macht das doch eigentlich schon automatisch durch "position"


    es wird von Google aber nicht empfohlen so zu arbeiten, sondern seinen code so zu gestalten, dass man sich immer auf die _id bezieht. denn die ist eindeutug.

    Manchmal ist das schon sinnvoll... bei Lecture Notes gibts das z.b.... damit man nicht immer das Tab an machen muss, falls man mal mehr als 2-3 Minuten dem Dozenten zugehört hat ohne was zu schreiben. Da ist das autom. ausschalten des Bildschirms nervig.


    Wie das geht weiß ich leider auch nicht,... aber du brauchst auf jedenfall eine Berechtigung im Manifest, dass du das autom. wechseln in den Standby Modus verhindern darfst/kannst.

    Wenn die ListView mit einem Cursor gefüllt ist, dann sollte es reichen den Cursor neu zu laden oder zu aktualisieren.
    Ich lade ihn immer neu. Den Cursor aktualisieren, also cursor.refresh() habe ich noch nicht probiert, rein logisch müsste das aber auch funktionieren.

    Hi,


    ich suche ein Lockscreen Widget für mein Android Tablet (Note 10.1). Auf dem ich mir eine Art Aufgabenliste anzeigen lassen kann.
    Hab schon etliche gefunden wo man die Terminliste anzeigen lassen kann, aber das reicht mir nicht.


    Brauche eine Liste auf dem Lockscreen mit aufgauben Und Terminen für den Heutigen Tag.... gibts sowas schon (ohne unnötigen Rechte und Werbung), oder muss ich mir das selbst machen?

    Hi...


    Der Pisco war das letzte mal am 29.04.2012 im Forum aktiv.


    Ich selbst kann leider auch nicht helfen...


    Aber vielleicht magst du ja ein neues Thema erstellen in dem du dein Vorhaben ein bisschen genauer erklärst, vielleicht kann dann jemand weiter helfen...

    SQLite wird also bei Android als Abfragesprache verwendet.


    SQLite ist nur das Datenbanksystem. Genauso wie MySQL und alles andere. Ein System, in dem die Daten gespeichert werden. Wie dieses System das macht kann dir (fasst) egal sein.


    SQL ist hier die Abfragesprache. Du machst auf deinem Server eine MySQL Datenbank. Dort speicherst du alle Daten, sodass jeder von dort immer die aktuellsten Daten bekommt.


    in deine Android APP machst du eine SQLite Datenbank. Diese Datenbank ist nur für deine Android App und jeweils immer nur für den jeweiligen App Nutzer Individuell.
    Du musst deine App so schreiben, dass sie ihre lokale SQLite Datenbank mit der Zentralen MySQL Datenbank auf deinem Server synchronisiert.
    Also sobald sie gestartet wird, guckt sie erstens ob eine Internetverbindung vorhanden ist und dann guckt sie ob es etwas neues in der Zentralen MySQL Datenbank auf dem Server gibt. Wenn ja, dann kopiert sie die neuen Sachen in die lokale SQLite Datenbank in der App.


    SQLite in der App, weil Android das mitliefert und es recht einfach ist.


    MySQL auf dem Zentralen Server, weil mehrere Personen dann gleichzeitig die Daten von dort Abrufen bzw. bearbeiten können.

    Freut mich :)


    nun noch ein paar Anmerkungen/Erinnerungen:


    1. Wenn du Daten aus der Datenbank holst und diese Anzeigst, ist das nie eine Referenz sondern eine Kopie der Daten. Das heißt wenn du was änderst, änderst du nur die Kopie. Das Gleiche gilt, wenn du Daten aus Textfeldern in Variablen speicherst, sind das auch nur Kopien. Müssen also vor bestimmten Aktionen immer aktuell gehalten werden (Wie hier in diesem Fall direkt vor dem Update)


    2. Es gibt da ein Prinzip, das nennt sich DRY = "Dont Repeat Yourself". Versuch möglichst selten oder nie deinen Code irgendwo doppelt zu schreiben.
    Hier in diesem Fall meine ich den Aufbau deines Dialogs. Ich würde lieber eine Methode dafür erstellen, die einen Boolean Parameter erwartet. z.B.


    Java
    public void dialogAufbau(Boolean neuerEintrag) {
      ...
    }


    und wenn du den Dialog für einen neuen Eintrag brauchst machst du dialogAufbau(true) und fürs Bearbeiten dialogAufbau(false)


    mit diesem Wert kannst du dann innerhalb der Methode dialogAufbau deinen Dialog aufbauen und dementsprechend immer eine Abfrage rein baun




    Achtung, frei aus der Hand geschriebener Code!... muss natürlich angepasst werden.



    3. Klassen sollte man richtig benennen. Die Klassen enden hier beide mit dem ..Adapter. Das solltest du nur machen, wenn die Klasse wirklich ein Adapter ist. Hier ist eine Klasse ne ListAktivity und die andere ein Datenbankkonstrukt. Also eines könnte man LvEintraege nennen und das andere einfach GeldDB


    Und damit komm ich zu deiner Frage. Es ist möglich, dafür musst du dir aber (meines Wissens) einen Eigenen Adapter bauen. Und eine bestimmte Methode Überschreiben, welche die Daten in die Views schreibt, dort kannst du dann die Views auch bearbeiten.


    Das ist ein etwas anderes, nicht seehr einfaches Thema für den Anfang. Solltest dafür lieber ein neues Thema eröffnen, bzw. kurze Tutorials suchen, wie man eigene Adapter baut. (Du benutzt den SimpleCursorAdapter, der ist von Android schon fertig gegeben und nicht zu verändern)



    Ein bisschen viel Text, sorry ;)

    Java
    public void eintragUpdate() { 
            long diesDas = 0; 
            diesDas = dbHelper.updateEintraege(new_plus_minus, new_datum, new_betrag, new_notiz, null); 
            Toast.makeText(getApplicationContext(), "rows Updated: " + diesDas +" : " + new_plus_minus + " : "+ new_betrag + " : " + new_datum + " : " + new_notiz + ": id=" + idCode, Toast.LENGTH_LONG).show(); 
            displayListView(); 
              
        }


    Hast vergessen null durch idCode zu ersetzen, also...


    Java
    diesDas = dbHelper.updateEintraege(new_plus_minus, new_datum, new_betrag, new_notiz, idCode);


    Dann probier nochmal

    Ja ich weiß, sagte ich ja bereits...


    ....
    rowsUpdatet steht 0, aber darum kümmern wir uns dann später.


    Wenn du die App neu öffnest, sind die Daten ja auch immernoch die Alten, richtig? Da bei rows Updated 0 steht bedeutet das dass 0 Datensätze, also Zeilen in der Datenbank, verändert wurden.


    Edit: magst du die LvCursorAdapter.java in deiner Dropbox nochmal aktualisieren bitte?

    Okay danke. Die Bilder sind nur, damit ich mir ein besseres Bild machen kann.


    Bin nochmal den Code durchgegangen. Es sieht so aus, dass du die Daten zu früh in die new - Variablen rein packst. Und zwar schon beim öffnen des Dialogs. Du musst die Daten erst beim klicken of OK in die Variablen schreiben, also



    edit: Beim Erstellen eines neuen Eintrags machst du das richtig, da passiert das beim Klicken. Beim Bearbeiten aber schon beim Aufbau des Dialogs. Ist zu früh, da die Variablen ja keine direkte Referenz zum Datenbankinhalt ist, sondern nur den Wert in sich kopiert.