SQL Daten in einem Fragment ausgeben

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • SQL Daten in einem Fragment ausgeben

    Hallo,

    da ich noch ein blutiger Anfänger in der Android Programmierung bin und ich seit einiger Zeit an einem Problem
    in meiner APP fest hänge. Möchte ich hier ein Frage in die Runde stellen.
    Ich versuche Daten aus meiner Datenbank in ein View in einem Fragment auszugeben. Leider bisher erfolglos.

    Quellcode

    1. myDB = this.openOrCreateDatabase(MKMSActivity.MY_DB_NAME, MODE_PRIVATE, null);
    2. Cursor c = myDB.rawQuery("SELECT _id, notiz , kundenname , kundennummer , datum , bearbeitet FROM " + MKMSActivity.MY_DB_NOTIZEN_TABLE + " ORDER BY datum and kundennummer" + ";", null); // " WHERE _id = 3" +
    3. startManagingCursor(c);
    4. SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.notizenkomplett, c, new String[] { "_id" }, new int[] { R.id.text1 });


    Dieser Code läuft Problemlos in einer ListActivity aber nicht in meiner Fragment Klasse.

    Quellcode

    1. public class NotizenHistorieFragment extends ListFragment


    Ich vermute es hat was mit dem Context zu tun. Bin mir aber nicht sicher und habe auch keine Lösung. ;(

    Bitte dringend um Hilfe. Wenn ihr mehr Infos benötigt dann nur nachfragen.

    Gruß

    Renato
  • Hallo Titus,

    ich bekomme die Klasse ja nicht durch den debugger.
    Ich habe bereits eine komplett neue Klasse geschrieben mit Zugriff auf meine Datenbank.
    Aber sobald ich dort den Cursor für dei Datenbank ertelle erhalte ich einen Fehler in der XML Datei.
    Dort steht dieses

    Quellcode

    1. <fragment
    Wie gesagt den Code für die Ausgabe der SQL Daten,funktioniert
    in einer anderen ListActivity Klasse. Die Ausgabe in den Fragments funktionieren auch aber nur mit einer
    selbsterstellten Stringlist. Hier das Beispiel:

    Quellcode

    1. String[] values = new String[] { "Android", "iPhone", "WindowsMobile",
    2. "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
    3. "Linux", "OS/2" };
    4. ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
    5. android.R.layout.simple_list_item_1, values);
    6. setListAdapter(adapter);


    Gruß Renato
  • Hi oldwarrior,

    ich vermute deine Vermutung ist richtig.

    und zwar

    Quellcode

    1. .openOrCreateDatabase();
    ist eine Methode der Klasse Context.
    Die Klasse ListActivity ist eine "Unterklasse" der Klasse Context und erbt damit auch openOrCreateDataBase(). Deshalb funktioniert auch dein Code in der ListActivity.

    Die Klasse ListFragment erbt aber nun nicht von Context also dürfte die Methode .openOrCreateDatabase(); nicht gehen.

    Wie gesagt es ist nur eine Vermutung, ich kann dir nicht zu 100% sagen das das dein Fehler ist.

    mfg Titus
  • Hallo Titus,

    es klappt wunderbar.
    Hier mal der Code dafür.

    Quellcode

    1. myDB = getActivity().openOrCreateDatabase(MKMSActivity.MY_DB_NAME, MKMSActivity.MODE_PRIVATE, null);
    2. List<String> list = new ArrayList<String>();
    3. Cursor cursor = myDB.rawQuery(
    4. "SELECT notiz FROM "
    5. + MKMSActivity.MY_DB_NOTIZEN_TABLE + ";", null);
    6. if ((cursor).moveToFirst()) {
    7. do {
    8. list.add(cursor.getString(0));
    9. } while (cursor.moveToNext());
    10. }
    11. if (cursor != null && !cursor.isClosed()) {
    12. cursor.close();
    13. }
    14. ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
    15. android.R.layout.simple_list_item_1, list);
    16. setListAdapter(adapter);
    Alles anzeigen


    großes Dankeschön,

    Gruß Renato