2012-04-12 16 views
1

ich Hilfe brauche eine Listenansicht zu schaffen, die die Elemente einer Datenbank SQL zeigt .. für ersten erstellt ein kleines XML-Layouts mit 3 Feldern Textview mit id: Text1,Text2 and Text3 und einer Listenansicht in meiner Tätigkeit. Nachdem ich die Spalten in einer SchnittstelleAndroid: SQLite auf Listview

public interface TableRegistry extends BaseColumns{ 

    String TABLE_NAME = "Registry"; 

    String TYPE = "Type"; 
    String DATE = "Date"; 
    String STATUS = "Status"; 
    String NUMBER = "Number"; 
    String MESSAGE = "Message"; 
    String OTHER = "Other"; 

    String[] COLUMNS = new String[] 
       { _ID, TYPE, DATE, STATUS, NUMBER, MESSAGE, OTHER }; 
      } 

gruppiert Nachdem ich die Datenbank-Klasse erstellt ..

public class APdatabaseClass extends SQLiteOpenHelper { 

    private static final String DATABASE_NAME = "APdatabase"; 
    private static final int DATABASE_VERSION = 1; 

    public APdatabaseClass(Context context) { 
     super(context, DATABASE_NAME , null, DATABASE_VERSION); 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 

     String sql = "CREATE TABLE {0} ({1} INTEGER PRIMARY KEY AUTOINCREMENT," + 
       " {2} TEXT NOT NULL,{3} TEXT NOT NULL,{4} TEXT NOT NULL,{5} TEXT NOT NULL,{6} TEXT NOT NULL, {7} TEXT NOT NULL);"; 
      db.execSQL(MessageFormat.format(sql, TableRegistry.TABLE_NAME, TableRegistry._ID, 
       TableRegistry.TYPE, TableRegistry.DATE, TableRegistry.STATUS, TableRegistry.NUMBER, TableRegistry.MESSAGE, TableRegistry.OTHER)); 

    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 

     // Drop older table if existed 
     db.execSQL("DROP TABLE IF EXISTS " + TableRegistry.TABLE_NAME); 

     // Create tables again 
     onCreate(db);  
    } 

Nun, wie verbinde ich meine Datenbank mit SimpleCursorAdapter oder etwas in meiner Tätigkeit Listview? Ich muss füllen die 3 TextView Felder mit:

TableRegistry.TYPE, TableRegistry.DATE, TableRegistry.STATUS. 

danke im voraus!

Antwort

2

Es scheint, wie Sie ein wenig zusätzliche Arbeit gehen. Hier ist, wie ich es normalerweise tun:

Erste create-Methode in Ihrer Datenbank Helfer, die Informationen zu holen Sie wollen:

public Cursor fetchListData() { 
    return mDb.query(TableRegistry.TABLE_NAME, new String[] { TableRegistry._ID, 
     TableRegistry.TYPE, TableRegistry.DATE, TableRegistry.STATUS }, null,null, 
     null, null, null); 
} 

dann in jeder Klasse wollen Sie die Liste erstellen:

APdatabaseClass mDbHelper = new APdatabaseClass(getActivity()); 
mDbHelper.open(); 

Cursor c = fetchListData(); 
getActivity().startManagingCursor(c); 

String[] from = new String[] { TableRegistry.TYPE, TableRegistry.DATE, TableRegistry.STATUS }; 
int[] to = new int[] { R.id.Text1, R.id.Text2, R.id.Text3 }; 
SimpleCursorAdapter data = new SimpleCursorAdapter(getActivity(), R.layout.yourlistlayout, c, from, to); 
setListAdapter(data); 

Beachten Sie, dass davon ausgegangen wird, dass Sie ein ListFragment oder ListActivity verwenden. Wenn Sie nicht sind, würde es etwas anders sein, wie Sie den Adapter einstellen.

Hoffe, das hilft!

+0

danke für die antwort! – Tony

0

Ja, Sie können jetzt Anfragen mit der Methode raqQuery() auslösen, Sie erhalten Cursor im Ergebnis.

Jetzt müssen Sie durchlaufen den Cursor und holen Sie die Daten.

Zum Beispiel

Cursor cur = db.raqQuery("Select * from myTable",null); 
if (cur != null) { 
    if (cur.moveToFirst()) { 
     do { 
      cur.getString(cur.getColumnIndex("Name"))); // "Name" is the field name in table 
     } while (cur.moveToNext()); 
    } 
} 
+0

danke für die antwort! – Tony

Verwandte Themen