2012-07-16 3 views
0

J'ai créé une base de données avec un curseur. Je veux le montrer dans une liste. Ceci est mon fichier d'activité:Affichage de la liste de bases de données SQLite

package com.ucas.course; 

import java.util.List; 

import org.w3c.dom.Comment; 

import android.app.Activity; 
import android.app.ListActivity; 
import android.os.Bundle; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.SimpleCursorAdapter; 
import android.widget.TextView; 

public class SQLView extends ListActivity { 

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.list_example); 
     UCAS info = new UCAS(this); 
     info.open(); 
     String values = info.getData(); 
     info.close(); 
     AString[] columns = new String[] {UCAS.KEY_UNIVERSITY}; 
     int[] to = new int[] { R.id.name_entry, R.id.number_entry }; 
     startManagingCursor(c); 
     SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(this, R.layout.sqlview, c, columns, to); 
     this.setListAdapter(mAdapter); 

} 



} 

À l'heure actuelle, il n'y a pas d'erreur en dehors d'une erreur de curseur « instruction non valide dans fillWindow() », je ne sais pas si cela a quelque chose à voir avec mon problème, mais quand Je commence l'activité Je viens d'obtenir un écran vide

public Cursor getData() { 
    // TODO Auto-generated method stub 
    String[] columns = new String[]{KEY_ROWID, KEY_UNIVERSITY, KEY_OFFER}; 
    Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null, null, null); 


    return c; 
} 
+0

nombre de itmes dans « colonnes » et « à » doit être égal! Le curseur devrait aussi contenir la colonne "_id" (je suppose que c'est votre colonne KEY_ROWID). –

+0

Je les ai changés en String [] columns = new String [] {UCAS.KEY_ROWID, UCAS.KEY_UNIVERSITY, UCAS.KEY_OFFER}; \t int [] à = new int [] {R.id.KEY_ROWID, R.id.KEY_UNIVERSITY, R.id.KEY_OFFER}; Je suppose que c'est ce que vous vouliez dire mais je reçois toujours l'erreur et rien ne montre – user1261404

Répondre

1

Les listes peuvent et dans votre cas utiliser des curseurs pour sauvegarder leurs données. Vous n'avez aucune raison de créer une chaîne de résultats pour conserver les valeurs de vos requêtes. Vous pouvez passer le curseur directement sur l'adaptateur.

public String getData() { 
    String[] columns = new String[]{KEY_ROWID, KEY_UNIVERSITY, 
     KEY_COURSE, KEY_UCAS, KEY_SATISFACTION, KEY_EMPLOYED, 
     KEY_OFFER, KEY_OTHER}; 

    Cursor c = ourDatabase.query(DATABASE_TABLE, 
     columns, null, null, null, null, null); 

    return c; 

} 

Une fois que vous avez le curseur, liez-le à ListActivity à l'aide d'un SimpleCursorAdapter.

+0

salut merci qui était utile mais maintenant j'ai frappé un autre mur j'ai édité le poste ci-dessus avec plus d'informations et mon nouveau script – user1261404

0

il est petit changement à votre fonction

public String getData() { 
    String[] columns = new String[]{KEY_ROWID, KEY_UNIVERSITY, 
     KEY_COURSE, KEY_UCAS, KEY_SATISFACTION, KEY_EMPLOYED, 
     KEY_OFFER, KEY_OTHER}; 

    Cursor c = mDBHelper.getReadableDatabase.query(DATABASE_TABLE, 
     columns, null, null, null, null, null); 

    return c; 

} 
+0

je reçois toujours rien et le fillWindow() erreur – user1261404

+1

dans la méthode onDestroy de votre activité fermez le curseur –

+0

Comment fermer le curseur? désolé je suis nouveau à ce genre de choses – user1261404

Questions connexes