使用来自 com.example.android.apis.view 的 com.example.android.notepad 和 ExpandableList2.java,我编写了一个简单的应用程序,其中包含一个内容提供程序,为 sqlite 数据库中的两个表提供服务,以及一个使用我的 ExpandableListActivity 子类的显示活动. 我正在为 ExpandableList 以及组和子布局使用我自己的布局。数据库的内容在显示活动中正确显示,组折叠和展开正常。但是,如果我展开一个组,然后单击一个子项来选择它,我会得到以下堆栈转储:
线程 [<3> main](暂停(异常 IllegalStateException))
CursorWindow.getLong(int, int) 行:331
SQLiteCursor(AbstractWindowedCursor).getLong(int) 行:108
ContentResolver$CursorWrapperInner(CursorWrapper).getLong(int) 行: 127
CursorTreeAdapter$MyCursorHelper.getId(int) line: 435
SongsList $SetListExpandableListAdapter(CursorTreeAdapter).getChildId(int, int) line: 172
ExpandableListConnector.getItemId(int) line: 428
AbsListView$PerformClick.run() line: 1635
ViewRoot(Handler ).handleCallback(Message) 行:587
ViewRoot(Handler).dispatchMessage(Message) 行:92
Looper.loop() 行:123
ActivityThread.main(String[]) line: 4203
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: 不可用 [native method]
Method.invoke(Object, Object.. .) line: 521
ZygoteInit$MethodAndArgsCaller.run() line: 791
ZygoteInit.main(String[]) line: 549
NativeStart.main(String[]) line: 不可用 [native method]
我的 SimpleCursorTreeAdapter:
public class SetListExpandableListAdapter extends
SimpleCursorTreeAdapter {
public SetListExpandableListAdapter(Context context, Cursor cursor, int groupLayout,
int childLayout, String[] groupFrom, int[] groupTo, String[] childrenFrom,
int[] childrenTo)
{ super(context, cursor, groupLayout, groupFrom, groupTo,
childLayout, childrenFrom, childrenTo);
}
@Override
protected Cursor getChildrenCursor(Cursor setListCursor) {
Uri.Builder builder =
SetListDefs.Songs.CONTENT_URI.buildUpon();
Uri songsUri = builder.build();
return managedQuery(songsUri, mSongProjection,
"SETLIST = '" +
Long.toString(setListCursor.getLong(mSetListIdColumnIndex)) + "'",
null, null);
}
}
我还不能在抛出 IllegalStateException 之前在我的代码中设置断点。在我看来,我正在做示例所做的事情,但显然我缺少一些东西。
一些帮助将不胜感激。