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;
}
任何帮助,将不胜感激。
感谢您的答复,但是当我从原来的地方删除初始化语句和把它放在onCreate()中,onListItemClick()不能读取它,从而给出一个错误。如果我在原始和onCreate()中都保留初始化语句,我会得到相同的错误。 – ankur3000 2012-02-06 08:04:31
嗯,只需将它们声明为全局,然后在'onCreate()'中初始化,我编辑了我的答案。 – 2012-02-06 08:10:24