2012-02-06 195 views
0

我在android应用程序开发中很新颖,我试图从SQLite数据库中获取行显示为Listactivity,但这不起作用,程序意外终止。下面是代码:使用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(); 
     }*/ 
    } 
} 

,这是在其他类中的方法:

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; 
    } 

任何帮助,将不胜感激。

回答

1

看来你是有上下文的问题,只要把你的初始化新Infor = HotOrNot(this);onCreate()内和编辑代码,

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

感谢您的答复,但是当我从原来的地方删除初始化语句和把它放在onCreate()中,onListItemClick()不能读取它,从而给出一个错误。如果我在原始和onCreate()中都保留初始化语句,我会得到相同的错误。 – ankur3000 2012-02-06 08:04:31

+1

嗯,只需将它们声明为全局,然后在'onCreate()'中初​​始化,我编辑了我的答案。 – 2012-02-06 08:10:24

相关问题