Eine Frage zum Aufbau.

C

coreytaylor211

Fortgeschrittenes Mitglied
5
Hallo zusammen,

Ich stehe gerade vor einem Problem wie ich Daten Sinnvoll verwalten/ablegen kann um Sie gezielt wieder abzurufen.

Hier mal ein Beispiel :

Nehmen wir an ich habe einen Korb voll Obst (Bananen, Äpfel, Birnen, Kiwi) jedes Obst hat bestimmte Beschreibungen (als String) z.b Bannen sind Weich, nicht lange haltbar, kosten 0,99 € u.s.w.
Dann hat jedes Obst auch ein Bild welche gespeichert werden muss.

Da wollte ich euch fragen wie man das Intelligent lösen kann, ich möchte wenn es geht auf dynamisch erzeugte Textviews verzichten.

Eine grobe Vorstellung wäre die App öffnet sich und es erscheint das Obst als Bild in einem ImageView durch klicken auf eine Obstsorte werden dann die oben genanten Eigenschaften aufgelistet.

lieben Dank
und für alle ein schönes Fest und einen guten Rutsch.

Ps: Das ganze soll beliebig erweiterbar sein, ich geh mal davon aus das sowas mit einer ArrayList am besten zu lösen ist oder ?
 
Zuletzt bearbeitet:
Hallo Corey :

schlichte einfache Weihnachts-Antwort : Sqlite

und für alle ein schönes Fest und einen guten Rutsch.

Lieben Dank , und das Gleiche geht auch wieder zurück.
Du glaubst aber doch nicht im Ernst , dass wir alle an den Tagen nichts an AS machen - oder doch ? :)

Ergo : man hört sich bestimmt nochmal :)
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: coreytaylor211
Danke für die schnelle Antwort.
schlichte einfache Weihnachts-Antwort : Sqlite
Ist eine Datenbank für mein vorhaben denn schon Sinnvoll ? Ich meine die App soll ja nicht so mega groß werden. Mit Arrays meinst du ist das zu umständlich ?
Ich meine jetzt aus meiner Sicht (leicht fortgeschritten im Android programmieren), für dich ist so eine Dantenbank in 5 min durch :), ich muss erstmal in die Materie einlesen.
Ich werde mir das mit sqlite auf jeden fall anschauen.

Du glaubst aber doch nicht im Ernst , dass wir alle an den Tagen nichts an AS machen - oder doch ? :)

Ergo : man hört sich bestimmt nochmal :)

Ja ich glaube auch das hier viele noch was in AS machen :D , ich habe nur an die Personen gedacht die leider keine Zeit haben für AS.
 
Hallo Corey,

für die Sqlite gibt es X Tutorials im Netz und wenn du schon mal mit MySql gearbeitet hast , bist du schnell durch.
Auch zu My(SQL) gibt es X Tuturials - auch in deutsch.

Die Datenbank ist schnell, flexibel und ein wahrer Segen.

Ich selbst arbeite schon gar nicht mehr mit den Preferences - nur noch mit DB.
Dazu habe ich mir einmal eine klasse geschrieben und brauche mich nie mehr damit zu beschäftigen.

Du wirst sie lieben lernen, nimm dir einfach den Abend nur dafür Zeit
 
  • Danke
Reaktionen: coreytaylor211
Für deinen Fall ist eine Datenbank schon das Richtige. Leider kenne ich keine NoSQL-Lösung für Android außer Preferences, die wären aber meiner Meinung nach hier nicht so gut.

Wie gut kennst du dich denn mit relationalen Datenbanken aus?
 
  • Danke
Reaktionen: coreytaylor211 und swa00
Hallo Kardroid, damit kenne ich leider nicht gut aus aber ich habe es mit sqlite hingekommen:) Dafür nochmal ein großes Danke an swa00.
 
Siehste, wer sagt es denn :)
 
Moin ich bin es nochmal , kann mit jemand sagen warum diese schleife nur einen Eintrag in das Array vornimmt.
Code:
String[] array = new String[crs.getCount()];
int i = 0;
while(crs.moveToNext()){
    String uname = crs.getString(crs.getColumnIndex("NAME"));
    array[i] = uname;
    i++;
}

Ich möchte gerne alle Werte die in dieser Spalte in das Array speichern.

lieben Dank
 
ich tune mal ein wenig deinen Code :)

ArrayList<String> tmp = new ArrayList<String>();
Cursor m1Cursor = database.rawQuery("SELECT * FROM ....", null);
if (m1Cursor != null)
{
if(m1Cursor.moveToFirst())
{
for(int i=0;i<m1Cursor.getCount();i++)
{
tmp.add(m1Cursor.getString(m1Cursor.getColumnIndex("NAME")));
m1Cursor.moveToNext();
}
m1Cursor.close();

return tmp;
}
}
 
  • Danke
Reaktionen: coreytaylor211
Also ich habe mir jetzt eine Methode geschrieben,
Code:
    protected ArrayList<String> getStrings(String ss){
        String s = ss;
        ArrayList<String> strings = new ArrayList<>();
        Cursor cursor = database.query(DbHelper.TABLE_SC, allColumns, DbHelper.COLUMN_ID + "=" + insertId, null, null, null, null);

    
        while (cursor.moveToNext()){
            String uname = cursor.getString(cursor.getColumnIndex(s));
            strings.add(uname);
        }
        cursor.close();
        return strings;
    }

wenn ich das jetzt so mache wird immer nur der der letzte Wert in das Array geschrieben.

vielleicht mache ich ja auch bei dem Aufruf der Methode etwas falsch, sprich bei der Zuweisung ??
Ich mache das momentan so
Code:
tmp_array_string = dataSource.getStrings("NAME");
oder muss ich das mit der clone() Funktion machen ?
 
schau mal meine Schleife bitte genauer an , bei dir fehlt die Hälfte
 
ok; habe jetzt mal deine Methode genommen, da bekomme ich leider ne nullPointerException
hier mal der code
Code:
    protected ArrayList<String> getStrings(String ss){
        String s = ss;
        ArrayList<String> strings = new ArrayList<>();
        Cursor cursor = database.query(DbHelper.TABLE_SC, allColumns, DbHelper.COLUMN_ID + "=" + insertId, null, null, null, null);

        if (cursor != null){
            if (cursor.moveToFirst()){
                for (int i=0;i<cursor.getCount();i++){
                    strings.add(cursor.getString(cursor.getColumnIndex(s)));
                    cursor.moveToNext();
                }

            }
            cursor.close();

        }
        return strings;

    }

sorry für die ganzen Fragen aber das mit der Datenbank ist für mich nicht so leicht. länge des arrays ist null
 
Na wenn die länge des Array NULL ist , dann hast du auch kein Ergebnis aus der Datenbank :)

Dein Query ( Abfragestring) ist dann falsch.

Nehmen wir mal an du hast eine Tabelle die da MYTABLE heisst
und in der ist eine spalte die da NAME heisst

dann machst du mal erst Folgendes :

du ersetzt
Cursor cursor = database.query(DbHelper.TABLE_SC, allColumns, DbHelper.COLUMN_ID + "=" + insertId, null, null, null, null);

in

database.rawQuery("SELECT * FROM MYTABLE", null);

MEHR nicht !!

Schau mal ob du dann ein Ergebnis bekommst -
wenn nicht, dann ist deine DB leer

P.S. dein protected ist ungewöhnlich nimm lieben mal ein private
ich habe da noch einige "pferdefüsse" bei dir gesehen , die aber später
 
lieben Dank geht alles soweit.
 

Ähnliche Themen

M
Antworten
2
Aufrufe
631
Mozart40
M
wernho
Antworten
11
Aufrufe
693
wernho
wernho
A
Antworten
1
Aufrufe
584
swa00
swa00
Zurück
Oben Unten