2012-02-06 4 views
0

Je suis assez nouveau dans le développement d'applications android et j'essaie d'obtenir des lignes d'un SQLite db pour apparaître comme une Listactivity, mais cela ne fonctionne pas et le programme se termine de façon inattendue. Voici le code:Remplir une liste en utilisant une base de données SQLite

package ankur.test.app; 

import android.app.ListActivity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 

public class testMenu extends ListActivity{ 

    HotOrNot Infor = new HotOrNot(this); 
    { 
     Infor.open(); 
    } 
    String[] result = Infor.getList(); 
    { 
     Infor.close(); 
    } 


    @Override 
    protected void onCreate(Bundle ankurtestlist) { 
     // TODO Auto-generated method stub 
     super.onCreate(ankurtestlist); 
     setListAdapter(new ArrayAdapter<String>(testMenu.this, android.R.layout.simple_list_item_2, result)); 

    } 

    @Override 
    protected void onListItemClick(ListView l, View v, int position, long id) { 
     // TODO Auto-generated method stub 
     super.onListItemClick(l, v, position, id); 
     Object cheese = result[position]; 
    /* try{ 
     Class ourClass = Class.forName("ankur.test.app."+ cheese); 
     Intent ourIntent = new Intent(testMenu.this, ourClass); 
     startActivity(ourIntent); 
     }catch(ClassNotFoundException e){ 
      e.printStackTrace(); 
     }*/ 
    } 
} 

et c'est la méthode dans une autre classe:

public String[] getList() { 
     // TODO Auto-generated method stub 
     String[] columns = new String[]{ KEY_ROWID, KEY_NAME, KEY_HOTNESS}; 
     Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null, null, null); 
     ArrayList name = new ArrayList(); 
     int i = 0; 

     int iName = c.getColumnIndex(KEY_NAME); 

     for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){ 
      name.add(c.getString(iName)); 
      i++; 
     } 

     String[] result = (String[]) name.toArray(); 
     return result; 
    } 

Toute aide serait appréciée.

Répondre

1

vous Semble rencontrez un problème de contexte, il suffit de mettre votre initialiser votre nouveau Infor = HotOrNot(this); dans la onCreate() et modifier votre code comme,

String[] result; 
HotOrNot Infor; 

@Override 
    protected void onCreate(Bundle ankurtestlist) { 
     super.onCreate(ankurtestlist);\ 

     Infor = new HotOrNot(this); 
     Infor.open(); 
     result = Infor.getList(); 
     Infor.close(); 
     setListAdapter(new ArrayAdapter<String>(testMenu.this, android.R.layout.simple_list_item_2, result)); 
    } 
+0

Merci pour vous répondre, mais quand je retire les déclarations d'initialisation du lieu d'origine et mettez-le dans onCreate(), le onListItemClick() n'est pas capable de le lire et donne donc une erreur. Si je laisse les instructions d'initialisation à la fois sur l'original et dans onCreate(), j'obtiens la même erreur. – ankur3000

+1

Eh bien, juste les déclarer comme globaux et ensuite initialiser dans 'onCreate()', j'ai édité ma réponse. –

Questions connexes