我正在尝试使用 ExpandableListAdapter 显示 ExpandableListView。我有几个问题。第一个是使用 UNION 如下:
Cursor cur = db.rawQuery("select ig._id, ig.nombre, 0 tipo from InteresGrupo ig where ig.nombre<>'General' "+
"union "+
"select i._id, i.nombre, 1 tipo from Interes i "+
"inner join InteresGrupo g on i.interesGrupo=g._id "+
"where g.nombre='General' "+
"order by ig.nombre", null);
这引发了下一个异常:
Couldn't read row 0, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.
SQL 在 SQLite 编辑器中运行良好。最后,我可以将“UNION”更改为“UNION ALL”(我仍然不知道为什么)。
当我尝试订购元素时,下一个问题(仍未解决)出现了。我用了下一句话:
Cursor cur = db.rawQuery("select ig._id, ig.nombre, 0 tipo from InteresGrupo ig where ig.nombre<>'General' "+
"union all "+
"select i._id, i.nombre, 1 tipo from Interes i "+
"inner join InteresGrupo g on i.interesGrupo=g._id "+
"where g.nombre='General' "+
"order by 2", null);
同样的例外。SQL 语句在 SQLite 编辑器中再次运行良好,所以我认为在适配器中使用 SQL 语句时一定有一些限制。
在调用适配器的任何方法之前抛出异常,因此它与适配器内部的代码无关,而只是 SQL 语句(我猜)。我发生在接下来的三行中的第三行:
ExpandableListView epView = (ExpandableListView)findViewById(R.id.lvIntereses);
mAdapter = new MyExpandableListAdapter(cur, this);
epView.setAdapter(mAdapter);
任何人都可以给小费吗?
提前致谢。