【问题标题】:SQLite database list viewSQLite 数据库列表视图
【发布时间】:2012-07-16 21:41:20
【问题描述】:

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

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

【问题讨论】:

  • “columns”和“to”中的item数必须相等!游标还应包含“_id”列(我假设这是您的 KEY_ROWID 列)。
  • 我已经把它们改成了这个 String[] columns = new String[] {UCAS.KEY_ROWID,UCAS.KEY_UNIVERSITY, UCAS.KEY_OFFER}; int[] to = new int[] { R.id.KEY_ROWID, R.id.KEY_UNIVERSITY, R.id.KEY_OFFER};我想这就是你的意思,但我仍然收到错误,没有任何显示

标签: java android sqlite listview cursor


【解决方案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。

【讨论】:

  • 嗨,谢谢,这很有用,但现在我又遇到了另一面墙,我用更多信息和我的新脚本编辑了上面的帖子
【解决方案2】:

你的功能有一些小的变化

    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;

}

【讨论】:

  • 在你的activity的onDestroy方法中关闭光标
  • 如何关闭光标?抱歉,我对这些东西不熟悉
  • ((CursorAdapter) this.getListAdapter()).getCursor().close();
  • 那没有改变什么抱歉。可能与我的 XML 的有关
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-20
  • 2014-04-01
相关资源
最近更新 更多