2011-11-17 3 views
0

J'ai essayé de résoudre le problème, mais je n'arrive pas à trouver ce que je cherche Google depuis quelques jours. penché vers ce que je veux faire, mais n'ai pas couru à travers tout ce qui est ce que je suis en train de faire. Pour commencer, j'ai construit ma base de données SQLite avec "TheNewBoston Android Tuts" tout fonctionne bien, maintenant que j'essaie de changer la base de données de vue autour d'elle des erreurs ou bloque l'application au démarrage. Je veux afficher certaines colonnes dans une rangée de la DB avec le curseur en utilisant la boucle for et charger dynamiquement le TableView avec les données:Android SQLite: affichage des entrées de données

DbEntry [data | données | Affiché | données | Afficher | Afficher | données]

Je peux le faire si j'ai un TextView seul, mais avec un TableLayout> TableRow je pense que c'est là que le problème est mais pas sûr ... aimerait être en mesure de charger les lignes de la table de la classe elle-même au lieu de définir les vues de texte si possible. J'espère avoir donné assez d'informations sur ce que j'essaie de faire, si quelqu'un peut me diriger vers un très bon tutoriel ou donner un peu de lumière sur ce sujet, cela sera grandement apprécié.

XML:

<TableLayout 
    android:id="@+id/view_Table" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:weightSum="5" > 
<TableRow 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="4" > 
     <TableRow 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" > 
      <TextView 
       android:id="@+id/view_DbCol3" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:text="DB Col 3 Displayed Data" /> 
     </TableRow> 

avec xml j'espère que je suis en train de faire la bonne table que son semblable à HMTL genre de choses en plaçant des rangées de table à côté les uns des autres

SQLview Classe

setContentView(R.layout.sqlview); 
    TextView tv = (TextView) findViewById(R.id.view_DbCol3); 
    try { 
     DBload info = new DBload(this); 
     info.open(); 
     String data = info.getData(); 
     info.close(); 
     tv.setText(data); 
    } catch (Exception e) { 
     // Error Message Dialog 
     String error = e.getLocalizedMessage(); 
     Dialog d = new Dialog(this); 
     d.setTitle("DB ERROR"); 
     TextView tv1 = new TextView(this); 
     tv1.setText(error); 
     d.setContentView(tv1); 
     d.show(); 
    } 

DbHelper Classe: getData Méthode

public String getData() { 

    String[] cols = new String[] {KEY_PLACE}; 
       // I have also tried with all my KEY variables 

    // reads info from DB columns 
    Cursor c = ourDB.query(KEY_TABLE, cols, null, null, null, null, null); 
    String result = ""; 

    int Ione = c.getColumnIndex(KEY_PLACE); 

    for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) { 
     result = result 
     + c.getString(Ione) 
     + "\n"; 
    } 
    return result; 
} 

l'erreur je reçois est

11-17 00: 13: 09,993: E/CursorWindow (590): demande illicite pour l'emplacement de champ 0, -1. numRows = 2, numColumns = 1

comme je l'ai dit j'espère avoir donné suffisamment d'informations pour peu d'aide si possible, merci beaucoup

+0

utilisez simplement listview ... recherchez un exemple dans le dossier sdk ... NotePad project ou List7.java dans ApiDemos – Selvin

Répondre

1

Ce link vous aidera beaucoup.

anywayz essayer ceci dans votre code

if(c.getCount()>0) { 
    int index=0; 
    while(c.moveToNext()){ 

    result = result 
      + c.getString(index) 
      + "\n"; `enter code here` 
    index++; 
    } 
} 

Hope this helps ..

+0

vous devez changer le nom de variable de c lorsque vous définissez avec un type de données entier alors que c est déjà utilisé avec le type de données Cursor – Pratik

1

L'erreur semble dire que votre colonne 'KEY_PLACE' n'existe pas, parce que la méthode columnIndex renvoie -1.

Vérifiez la valeur de KEY_PLACE et le nom de la colonne retournée dans votre curseur

it helps Jokahero

PS: Vous devez vérifier que votre curseur est non nul avant de l'utiliser:

if (c != null) { 
    while (c.moveToNext()) { 
     // ... 
    } 
} 

Et ne pas oublier de fermer le curseur lorsque le travail est terminé:

c.close(); 
+0

merci beaucoup ,,, qui a aidé beaucoup, les deux autres gars m'ont incité à réfléchir le long de la ligne de la déclaration si je ne pouvais pas obtenir mon doigt sur elle .. mais cela corrige tout problème qui se passe cependant .. merci beaucoup pour l'aide – acrichm

+0

De rien;) – Jokahero

Questions connexes