我需要在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。
答案 0 :(得分:2)
尝试选择一个列为_ID
别名
select col1 as _id from table
答案 1 :(得分:1)
要使用CursorAdapter(或其任何子类),您需要具有“_id”列; it's explicitly stated in the documentation。那是因为CursorAdapter大量使用这个列。
我推荐的是你认为(基于你的项目)更容易这两条路径:
在其中一个表格中创建一个_id字段,以便在您加入时最终得到一个_id字段。
实现自己的ListAdapter(从BaseAdapter开始),它本质上是一个CursorAdapter,但不需要_id字段。
我怀疑如果您控制数据库,#1会更容易,但如果您无法更改数据库的架构,则必须执行#2。