CED-APP (SQLite-DB mit Listview verbinden)

  • Antworten:12
  • Bentwortet
Marc K.
  • Forum-Beiträge: 23

26.07.2013, 14:53:52 via Website

Hallo zusammen,

ich bin seit Anfang 2013 dabei meine eigene APP zu programmieren jedoch bin ich jetzt als JAVA/Android-Anfänger an einem Punkt angelangt wo ich nicht weiter komme mit meinen ganzen Büchern und Trainings-DVD´s und wohl professionelle Hilfe benötige.

Bedingt durch meine chronisch entzündlich Darmkrankheite kurz CED (Morbus Chron / Colitis ulcerosa) wude ich letztes Jahr in der Kur dazu angehlaten meine Stuhlgänge zu notieren und daraus ist die Idee entstanden dieses per Smartphone zu machen. Bislang gibt es in der BRD mehr als 100.000 Personen die an dieser Krankheit leiden daher denke ich das dieses ein sehr nützliches Projekt ist jedoch ich leider nicht über die nötigen Kenntnisse verfüge um das selber zu 100% umzusetzten jedoch bin ich lernwillig und habe mir fest vorgenommen diese durchzuziehen egal wie lange ich brauche oder welche Steine mir in den Weg gelegt werden

Zu meinem Problem:
Die grafische Oberfläche ist erstellt und diverse Dinge konnte ich schon selber durch Copy & Paste lösen jedoch ist das Herzstück meiner App eine SQLite-DB die ich gerne mit einer ListView verbinden möchte, ich habe diverse Beispiele im Netz gefunden kann diese jedoch nicht umsetzen da ich neben Datum, Uhrzeit und diverse Checkboxen habe und ich bin nicht ganz sicher wie ich die speichern und anschliessen wieder auslesen kann.

Lange Rede kurzer Sinn, hier der Link zu meinem CED-App-Projekt mit der Bitte ob sich das mal ein Android + SQLite-DB-Experte anschauen kann und mir evtl. sagt wo der oder die Fehler liegen

LINK: www.uploadarea.de/upload/8ffxxrprf1liuc6rztfyknfm5.html

Gruß Katsche

— geändert am 26.07.2013, 18:08:45

Antworten
impjor
  • Forum-Beiträge: 1.793

26.07.2013, 19:08:50 via App

Naja, die App-Idee hört sich zu groß für ein Copy-`n`-Paste Project an....
Allerdings frage ich mich, was du nicht verstehst...
Das erzeugen einer SQLite-DB, das auslesen/hinzufügen von Daten, oder ....?
Am besten postest du, wo genau du hängst und ob du schon (erste) Ansätze hast.
PS: Der Link funktioniert nicht.
Gruß

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Marc K.
  • Forum-Beiträge: 23

26.07.2013, 22:23:32 via Website

Hi,

der Link funtioniert... zumindest bei mir.... bitte kopieren und im Browser einfügen:

www.uploadarea.de/upload/8ffxxrprf1liuc6rztfyknfm5.html

Falls es wirklich nicht geht dann bitte nochmal melden!
Als neues Mitglied kann ich vorerst keine Links auf externe Webseiten veröffentlichen bekomme ich auch angezeigt.... hoffe es geht trotzdem.

Gruß Katsche

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

27.07.2013, 00:49:18 via Website

Ohne reingeschaut zu haben:

Als reiner Anfänger hat deine APP nicht nur ein Problem, das fängt dabei an das viele kein OOP verstanden haben bzw deren Object Design einfach nicht ausreicht dafür und viele Dinge am ende irgendwie "geflickschustert" werden. Nimm das nicht persönlich, ich hab auch mal angefangen.

Abgesehen von der Krankheit, abstrahiert ist das nur ein Logbuch was da geführt wird. Wenn du nicht konkreter wirst frage Ich mich wieso du nicht einfach eine APP aus dem Store dafür nutzt Datum etc festzuhalten ?

Wenn es um SQLite geht, gilt auch hier: Es gibt das Internet, gefühlt 1000² Quellen und Bücher aus dennen man Lernen kann. Wenn es also keinen Zeitdruck gibt fange mit einem nebenprojekt an der die die Grundlagen vermittelt und komme dann wieder zu deinem Projekt.

Anstatt sich über Daten gedanken zu machen fängst du Hinten an, das UI juckt erstmal keinen auch wenn es anfangs fortschritte gibt die man "feiern" kann. Ein Android UI zu erstellen ist ansich wirklich einfach.

Wenn man konkret fragt bekommst du auch hier "teilweise" hilfe, dafür musst du aber sagen wo es schmerzt. Und wenn du nur die Symtome beschreibst kann man oftmals helfen.

PS: Deine RAR datei ist korrupt, mein Linux öffent diese nicht.

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Marc K.
  • Forum-Beiträge: 23

27.07.2013, 13:34:41 via Website

Moin,

@Mac System: deinem ersten Teil ist nichts hinzuzufügen. Ja, ich verstehe kein OOP sowie habe ich derzeit ein vielzahl an losen Enden die noch verbunden werden müssen jedoch nach mehreren Wochen probieren und testen kann ich recht stolz behaupten das ich zumindest einiges auf "Papier" gebracht habe. Ich habe eine ganz genaue Vorstellung was ich möchte und natürlich kann mein erstes Projekt kein Meisterstück werden.

Ja, mein Projekt ähnelt einem Tagebuch wo ich diverse Daten festhalten möchte, hier könnte ich auch etwas aus dem Google-Playstore laden jedoch habe ich den Anspruch selber etwas nach meinen eigenen Wünschen zu programmieren. Ich bin kein Programmierprofi und werde wahrscheinlich auch niemals einer werden jedoch irgendwo und irgendwie muss ich doch anfangen oder? B)

Ja, es gibt einen haufen Quellen wo ich nach SQLite nachlesen kann jedoch mag ich lieber Beispielcodes wie von: www.rwblinn.de wo man sich ganz genau anschauen kann wo was hingehört und sich bei Änderung verhält. Bislang habe ich mir vorgestellt das ich bis Januar 2014 fertig bin, das Projekt ist erstmal nur für mich. Kennt denn noch jemand eine Seite wo ich Codebeispiele wie oben beschrieben downloaden kann?

Mein konkrete Frage heisst, warum werden meine Daten aus der Activity nicht in die SQLite-DB übernommen...besser erklären kann ich es nicht...da hilft nur sich mein Beispiel anzuschauen....ich erhalte eine Fehlermeldung die da lautet: error code = 1, msg = near "cedtabelle"; syntax error, db=/data/data/com.example.cedapp/databases/ced.db

Hier der Link zum Download meines App-Projekts als ZIP-Datei.

www.uploadarea.de/upload/hol1d4xy7quraddjtfrvvlelz.html

Gruß Katsche
Merke: NIPSILD = Nicht In Problemen Sondern In Lösungen Denken

Antworten
Marc K.
  • Forum-Beiträge: 23

30.07.2013, 10:14:29 via Website

Guten Morgen,

ich habe gesehen das sich zwar eine ganze Reihe an Personen meinen Thread angeguckt hat jedoch habe ich von niemenanden die Rückinfo erhalten ob Er sich auch mein APP-Projekt in Eclipse angesehen hat!

Ich würde mich freuen, wenn mir jemand sagen könnte ob mein bisheriger Versuch die Daten in der SQLite-DB zu speichern soweit in Ordnung oder ein großer blödsinn ist. Könnte mir vielleicht ein fortgeschrittener Programmierer sagen ob es Sinn macht mit meinem bisherigen Code weiter zu machen oder ich neu mit dem Datenbankaufbau anfangen muss/ soll?

Falls es wirklich nur "Kleinigkeiten" sind die repariert und umgeschrieben werden müssen hätte ich gerne gewusst ob jemand so lieb ist und das für mich macht oder wie ICH vorgehen soll.

Gruß Katsche

Antworten
Christian
  • Forum-Beiträge: 307

30.07.2013, 13:39:55 via Website

Hi Marc Katscherowskide,

1.) schau dir bitte nochmal deine Kommentare im Code an weil teilweise machen sie keinen Sinn oder die Funktion die sie beschreiben macht was ganz anderes
2.) Klassenvariblen kommen in den Kopf der Klasse (SecondActivity)

3. DB Erstellung: also nach dem Code hier:
1private static final String DATABASE_CREATE = "CREATE TABLE"
2 + DATABASE_TABLE + ("+ COLUMN_ROWID")
3 + " integer primary key autoincrement, "
4 + COLUMN_DATE_TIME + " TEXT NOT NULL, "
5 + COLUMN_BODY + " TEXT, "
6 + COLUMN_BLUT + " INTEGER, "
7 + COLUMN_GELENK + " INTEGER, "
8 + COLUMN_ORT + " TEXT,"
9 + COLUMN_SCHMERZEN + " INTEGER,"
10 + COLUMN_KONSISTENZ + " TEXT,"
11 + COLUMN_MAGENPROBLEME + " INTEGER),";
sollte eigentlich diese Tabelle NICHT erstellt werden.
Weil wenn man den String ausgibt kommt folgendes:
1CREATE TABLEcedtabelle+ COLUMN_ROWID integer primary key autoincrement, datumzeit TEXT NOT NULL, hinweis TEXT, blut INTEGER, gelenk INTEGER, ort TEXT,schmerzen INTEGER,konsistenz TEXT,magenprobleme INTEGER),

Hast du dir mal deine DB angeschaut? Falls du kein gerootetes Handy hast nimm den Emulator da kommst auch an die DB ran.

4.) Daten in die DB eintragen:

Welche Funktion soll den nun Daten in die DB schreiben?
Die Hier?
1private VerlaufDataSource datasource;
2List<CEDDBModel> RechnungenList = new ArrayList<CEDDBModel>();
3
4public void ButtonKlick (View view) {
5 String datumzeit = null;
6 String blut = null;
7 String konsistenz = null;
8 String magenprobleme = null;
9 String gelenk = null;
10 String schmerzen = null;
11 String ort = null;
12 String hinweis = null;
13
14 ähm fehlt hier nicht was ????????
15 findViewById(R.id.datumzeit);
16 findViewById(R.id.blut);
17 findViewById(R.id.konsistenz);
18 findViewById(R.id.magenprobleme);
19 findViewById(R.id.gelenk);
20 findViewById(R.id.schmerzen);
21 findViewById(R.id.ort);
22 findViewById(R.id.hinweis);
23
24 deine Werte sind alle NULL aber laut Tabellenbeschreibung darf Datumzeit nicht null sein
25 try {
26 datasource.open();
27
28 Die Methode hat eigentliche einen Rückgabewert soll das so sein? Weil laut Code macht ein Rückgabewert irgendwie keinen Sinn
29 datasource.createCEDDBModel(datumzeit, blut, konsistenz, magenprobleme, gelenk, schmerzen, ort, hinweis);
30 datasource.close();
31 }
32 catch (Exception ex) {
33 Toast.makeText(this,ex.toString(), Toast.LENGTH_LONG).show();
34 }
35
36Wenn du so die Daten aus CEDDBModel in der Liste anzeigen lassen möchtest benötigst du ein eigenes Layout und einen eigen Adapter siehe dafür das Tut in Andy N,. seinem Post
37 ArrayAdapter<CEDDBModel> adapterVerlauf = new ArrayAdapter<CEDDBModel>(SecondActivity.this, android.R.layout.simple_list_item_1, RechnungenList);
38
39 ListView lVerlauf = (ListView) findViewById(R.id.listView);
40 lVerlauf.setAdapter(adapterVerlauf);
41
42}

5.) Warum rufst du in 2 verschieden Methode setContentView auf um jedesmal ein neues Layout zusetzen? (SecondActivity -> onCreate und SecondActivity -> ConfirmButton) -> Lass das wenn du 2 Layouts auf einem Bildschirm brauchst nimm Fragments sonst mach ne neue Activity auf


Mfg Christian

— geändert am 30.07.2013, 13:45:02

Antworten
Marc K.
  • Forum-Beiträge: 23

01.08.2013, 22:16:05 via Website

Hallo Christian,

hatte leider erst jetzt Zeit mir das Ganze anzugucken!

Tja, was soll ich sagen.... ich bin etwas rat- und hilflos....an der SQLite-DB beiße ich mir schon seit Wochen die Zähne aus da ich die verschiedenen Zusammenhänge nicht "ganz" verstehe und als Anfänger habe ich zuviele lose Enden in der Hand die ich nicht verbinden kann. Ich habe versucht aus verschiedenen App-Beispielen die DB zusammen zu bauen oder besser gesagt zusammen zufrickeln versucht. Sorry das Du dafür Deine Zeit opfern musste.

Den Hauptcode habe ich aus dem Youtube-Trainingsvideo: Android Apps programmieren #8 - MySQLite Datenbanken Teil 1 und 2. Auf der Homepage der Macher kann man sich die fertige App herunterladen und diesen Codeschnippsel sollten eigenlich zum Erfolg führen dachte ich :wacko:

Ich habe jetzt von mehreren Seiten gehört das das Projekt als Anfänger zu schwer für mich ich und ich es einstampfen soll jedoch habe ich zuviel Zeit und Geld investiert und möchte gerne am Ball bleiben nur ohne hinreichende Kenntnisse ist das ziemlich pelzig.

PS! Ich bringe mir JAVA/ Android gerade im Selbstudium bei da es niemanden in meinem Umfeld gibt der mir helfen kann.

Die Homepage von Vogella ist bekannt jedoch fehlen mir da auch konkrete Beispiele die ich mir in Eclipse ansehen kann.

Gibt es irgendwo eine Beispiel-App die Du oder andere mir empfehlen könnten die ich mir näher ansehen kann um evtl. daraus abzukupfern um das Prinzip SQLite-Datenbanken besser zu verstehen?

Schönes Wochendene und sonnige Tage wünsche ich allen.
Gruß Katsche

— geändert am 01.08.2013, 22:16:36

Antworten
Christian
  • Forum-Beiträge: 307

02.08.2013, 12:30:04 via Website

Hi Marc,


Ich habe jetzt von mehreren Seiten gehört das das Projekt als Anfänger zu schwer für mich ich und ich es einstampfen soll jedoch habe ich zuviel Zeit und Geld investiert und möchte gerne am Ball bleiben nur ohne hinreichende Kenntnisse ist das ziemlich pelzig.
mmhh also ich denke das nicht. Ist doch ein nettes kleines Projekt und wenn man die ganze Sache ordentlich strukturiert sollte das auch machbar sein. Aber genau das ist es was vielen Anfängern richtig schwer fällt. Der Schwerpunkt deiner App liegt in der Verarbeitung von Daten also das Speicher und Lesen aus der DB. Warum fängst du dann damit nicht an? Also erst den DB Part erstellen und dann die UI.

Mein Vorschlag an dich wär folgendes:
1.) du erstellst dir ein neues sauberes Projekt
2.) du erstellst eine Datenbank in dieser App ( KEINE UI NUR DIE DB )
3.) du legst eine einfache Tabelle in der DB an (schau dir die DB an ob auch diese Tabelle angelegt wurde)
4.) du schreibst Daten in die Tabelle -> ganz einfache hartcodierte Daten nix dynamisches (auch hier wieder nachsehen ob alles da ist)
5.) du ließt die Daten aus Punkt 4 wieder aus (auch ganz einfach die Ausgabe sollte in der LogCat erfolgen)
6.) wenn das alles klappt hat baust du dir eine kleine simple UI (zum Beispiel einige EditText Views)
7.) die Eingaben der Editext schreibst du dann in die DB (also keine hartcodierten Eingaben mehr sondern dynamische)
8.) diesen dann wieder auslesen
9.) so wenn das klappt erweiterst du das ganze um eine ListView und zeigst da die ausgelesenden Daten an

Der Vorteile bei dieser Sache ist das es so viel einfacher ist dir zu helfen wenn du nicht weiter kommst bzw einen Fehler in deinem Code hast.
Ich vermute mal du hast ein Android Buch irgendwo rum zu liegen, da sollte eigentlich ausführlich erklärt werden wie du eine DB anlegst und mit Werten füllst.

Mfg Christian

Antworten
Marc K.
  • Forum-Beiträge: 23

02.08.2013, 17:26:45 via Website

Hallo Christian,

ja, dass klingt vernüftig.
Ich werde ein neues Projekt anlegen und mich darin erstmal mit SQLite vertraut machen.

Ja, ich habe mir diverse Androidbücher zugelegt und zwei Trainingsvideos jedoch vermisse ich darin wie ich mit Checkbox- sowie Datums- und Zeitwerte umgehe.

Ich werde Euch auf dem laufenden halten.
Gruß Katsche

Antworten
Marc K.
  • Forum-Beiträge: 23

18.08.2013, 14:43:15 via Website

Hallo Community, Hallo Christian,

ich habe in den letzten paar Tagen versucht ein verständnis dazu bekommen wie das funktioniert mit der SQLite-DB und dem verbinden in einer ListView. Ich habe mir diverse Beispiele angeguckt und auch zum laufen gebraucht jedoch das erlernte in meinem CED-Projekt umzusetzten klappt dann doch wieder nicht. :angry:

Ich habe hier: www.uploadarea.de/upload/ibf5aeolckl7sihdy1jq6a3p3.html nochmal mein Projekt hochgeladen und würde mich freuen wenn sich das nochmal jemand anschauen könnte.

Im Eingabeformular sollen Datum und Uhrzeit + optional Hinweistext ausgewählt und auf den Speicherbutton sollen die Daten in die DB geschrieben werden, alle anderen Funktionen sind noch nicht verknüpft.

Ich vermute den Fehler in meiner SecondActivity in Zeile: 198-210 (für den DBAdapter) und in Zeile 243-246 (Übergabe Datum&Uhrzeit in die Datenbank).

Mein Code scheint etwas durcheinander zu sein und derzeit wüsste ich nicht wie ich das gerade ziehen soll.

Mein Hauptziel ist es die Daten in die Datenbank und dann in die ListView anzeigen zu lassen.
Oder habe ich evtl. einen größeren Fehler in meinem Projekt? Wie gesagt, Datum + Uhrzeit + Hinweistext sind erstmal angestöpselt... Rest folgt später.

Würde mich sehr über Eure Tipps und Hilfe freuen, schönen Restsonntag noch.

Gruß Katsche

Antworten
Marc K.
  • Forum-Beiträge: 23

21.08.2013, 20:06:11 via Website

Guten Abend zusammen,

hatte schon jemand Zeit sich mein Projekt anzuschauen um mir bei meinem Problem zu helfen?

Gruß Marc

Antworten