2

我正在使用一个数据库,从中获取一个光标,然后使用一个简单的光标适配器来填充一个列表视图。我似乎无法弄清楚为什么应用程序在创建新的简单光标适配器时会崩溃。我的光标包含在一个单例对象中。我通过此类中的数据变量对其进行了引用。

String[] columns = new String[] {"item", "quantity", "days"};
int[] to = new int[] { R.id.nametext, R.id.quantitytext, R.id.dayslefttext};
SimpleCursorAdapter sCA = new SimpleCursorAdapter(this, R.layout.itemrow, data.listCursor, columns, to);
listView1.setAdapter(sCA);

simplecursoradapter 如何处理在其构造函数中传递给它的信息?参数之一是否格式错误?这是我用来查看是否有效的每一行的简单 xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content">
  <TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Loading Screen" 
    android:id="@+id/nametext"/>
  <TextView
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Loading Screen" 
    android:id="@+id/quantitytext"/>
  <TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Loading Screen" 
    android:id="@+id/dayslefttext"/>
</LinearLayout>

这是我加载游标的方式:

listCursor = myDataBase.query(ITEMS_TABLE, null, "location" +" = ?", new String[]{IN_SPECIAL_LIST}, null, null, "item");

我无法弄清楚问题是什么。我通过一些调试运行了这个,当我创建新的 simplecursoradapter 时出现了问题。

4

1 回答 1

5
myDataBase.query(ITEMS_TABLE, null, ...

这个 null 是你的问题,这意味着查询将使用SELECT *,但你的表中没有列_id,所以你应该使用

new String[] {"YOURID AS _id", "item", "quantity", "days"}

SimpleCursorAdapter 需要 _id 列

YOURID 可以是 ROWID(ROWID 为 _id)或来自您的数据库的任何 int 或 long ID

于 2011-04-04T11:10:00.483 回答