ListView zeigt keine Daten aus SQL LITE Database an

T

theboss22

Ambitioniertes Mitglied
0
Hey Leute,
ich habe folgendes Problem:
Ich habe eine SQL Lite Datenbank erstellt und versuche nun diese mit meiner ListViewActivity zu verbinden. Letztendlich sollen die Daten von der Datenbank dann in meiner ListView ausgegeben werden. Wenn ich nun aber den emulator starte, ist die ListLiew leer, sie enthält also keine Daten, kann mir jemand weiterhelfen ? Wäre Super! :)


Code für meine ListViewActivity:

Code:
  package com.example.fotooh2;

import java.util.ArrayList;
import com.example.fotooh2.R;
import com.example.fotooh2.DatabaseHandler;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ArrayAdapter;

import android.widget.ListView;

public class ListViewActivity extends Activity {

    public ListView listView1;

    public static ArrayList<String> ArrayofPositions = new ArrayList<String>();

    public void onCreate(Bundle savedInstanceState) { //
        super.onCreate(savedInstanceState); //
        setContentView(R.layout.suche_liste); //

        DatabaseHandler db = new DatabaseHandler(this);
        db.getAllPositionstoList();
        Log.d("FirstScreenActivity", "ListView bis hier!"); // LOG Fehlersuche

        listView1 = (ListView) findViewById(R.id.listView1);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                R.layout.listview_item_row, ArrayofPositions);

        listView1.setAdapter(adapter);

        Log.d("FirstScreenActivity", "ListView Läuft!"); // LOG Fehlersuche

    }
}


Code für meine listview_item_row:

Code:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dp">

     <ImageView android:id="@+id/imgIcon"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:gravity="center_vertical"
        android:layout_alignParentTop="true"
        android:layout_alignParentBottom="true"
        android:layout_marginRight="15dp"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp" />

     <TextView android:id="@+id/txtTitle"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="center_vertical"
        android:layout_alignParentTop="true"
        android:layout_alignParentBottom="true"
        android:textStyle="bold"
        android:textSize="22dp"
        android:textColor="#000000"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp" />

</LinearLayout>

Code für "suche_liste":

Code:
  <?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#FFFFFF"> 

     <ListView
        android:id="@+id/listView1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

</LinearLayout>

Code im DatabaseHandler:

Code:
  public List<Position> getAllPositionstoList() {
        List<Position> PositionsList = new ArrayList<Position>();
        // Select All Query
        String selectQuery = "SELECT * FROM " + TABLE_POSITIONS;

        SQLiteDatabase data = this.getWritableDatabase();
        Cursor cursor = data.rawQuery(selectQuery, null);

        // looping through all rows and adding to list
        if (cursor.moveToFirst()) {
            do {
                Position position = new Position();
                String name = "Name:" + cursor.getString(1);
                ListViewActivity.ArrayofPositions.add(name);
                PositionsList.add(position);
            } while (cursor.moveToNext());
        }

        // return Positions-Liste
        return PositionsList;
    }
}
 
db.getAllPositionstoList(); steht da so einfach. Ich nehme an, du lässt da ein Cursor zurückliefern.
Den musst du dem Adapter übergeben.

Also Cursor + Adapter = CursorAdapter. Ersetzte den mit dem Arrayadapter.

Warum nichts angezeigt wird, ist, dass der Adapter leer ist.

zumindest sieht es so aus, bei public static weiß man ja nie. Würde ich auch noch abändern.

edit: ah ok sry, ganz unten machste noch was hässliches :p (das meinte ich wegen public static )

Mach das mal weg und nimm nen CursorAdapter - geht auch n SimpleCursorAdapter, dem du die ids der views gibts.
 
Zuletzt bearbeitet:
hmmm danke :)

ich verstehe nur leider noch nicht so ganz was du meinst :/

" ah ok sry, ganz unten machste noch was hässliches :p (das meinte ich wegen public static )" was genau meinst du damit ?

Und wie soll ich den ArrayAdapter durch einen CursorAdapter ersetzen ? Einfach statt Array, Cursor schreiben ?
 
Ahjo, du hast es ja schon geschrieben "Databasehandler".
Und nun fuscht dieser dir wahllos in deiner Aktivität herum und das sogar Context übergreifend mit kontextbezogenen Daten (deine lokale db instance). Wenn nun später mehr solche Methoden in irgendwelchen Klassen hinzukommen, kann das sehr sehr unübersichtlich bzw. nicht mehr einfach nachvollziehbar sein.

Wegen dem Cursoradapter schau dir mal aus der android doku den Constructor an:

SimpleCursorAdapter | Android Developers

Als flags kannste da 0 setzen.
 

Ähnliche Themen

M
  • MikelKatzengreis
Antworten
10
Aufrufe
241
swa00
swa00
M
  • mafoma63
Antworten
2
Aufrufe
769
swa00
swa00
A
Antworten
10
Aufrufe
1.030
swa00
swa00
Zurück
Oben Unten