SQLite数据库列表视图

时间:2012-07-16 21:41:21

标签: java android sqlite listview cursor

我用光标创建了一个数据库。我想在列表视图中显示它。这是我的活动文件:

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

 }



}

目前除了一个游标错误“fillWindow()中的无效语句”之外没有错误,我不知道这是否与我的问题有关但是当我启动活动时我只是得到一个空白的屏幕

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

2 个答案:

答案 0 :(得分:1)

列表可以并且在您的情况下应该使用游标来支持他们的数据。您没有理由构建结果字符串来保存查询值。您可以将光标直接传递给适配器。

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;

}

获得光标后,使用SimpleCursorAdapter将其绑定到ListActivity。

答案 1 :(得分:0)

您的功能发生了很小的变化

    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;

}