在ListActivity中显示SQL连接的结果

时间:2010-08-14 14:20:56

标签: android sqlite listview cursor listactivity

我需要在ListView / ListActivity中显示SQL连接的结果。

我创建了一个游标:

Cursor cursor = db.rawQuery(LIST_JOIN_SQL, null);

如果我遍历游标,结果正是我所期望的。但是当我尝试使用SimpleCursorAdapter在ListView中显示这些结果时,我得到一个运行时异常,因为没有名为'id'的列。

SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, 
R.layout.item, cursor, FROM, TO);

FROM和TO定义为:

private static String[] FROM = { "name", };
private static int[] TO = { R.id.name, };

现在我想我可能在这里使用了错误的方法,因为看起来SimpleCursorAdapters并不是为了显示连接的结果。

您会在此推荐什么方法?我只能使用Android 1.6 API。

2 个答案:

答案 0 :(得分:2)

尝试选择一个列为_ID别名

select col1 as _id from table

答案 1 :(得分:1)

要使用CursorAdapter(或其任何子类),您需要具有“_id”列; it's explicitly stated in the documentation。那是因为CursorAdapter大量使用这个列。

我推荐的是你认为(基于你的项目)更容易这两条路径:

  1. 在其中一个表格中创建一个_id字段,以便在您加入时最终得到一个_id字段。

  2. 实现自己的ListAdapter(从BaseAdapter开始),它本质上是一个CursorAdapter,但不需要_id字段。

  3. 我怀疑如果您控制数据库,#1会更容易,但如果您无法更改数据库的架构,则必须执行#2。