使用ExpandableListActivity和SimpleCursorTreeAdapter的IllegalStateException

时间:2010-08-25 22:36:17

标签: android sqlite expandablelistview android-contentprovider

使用com.example.android.notepad和ExpandableList2.java com.example.android.apis.view,我写了一个简单的应用程序 包含一个在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)行:435
        SongsList $ SetListExpandableListAdapter(CursorTreeAdapter).getChildId(int,int) 行:172
        ExpandableListConnector.getItemId(int)行:428
        AbsListView $ PerformClick.run()行:1635
        ViewRoot(Handler).handleCallback(消息)行:587
        ViewRoot(处理程序).dispatchMessage(消息)行:92
        Looper.loop()行:123
        ActivityThread.main(String [])行:4203
        Method.invokeNative(Object,Object [],Class,Class [],Class,int, boolean)line:not available [native method]
        Method.invoke(Object,Object ...)行:521
        ZygoteInit $ MethodAndArgsCaller.run()行:791
        ZygoteInit.main(String [])行:549
        NativeStart.main(String [])行:不可用[native method]

My 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之前。在我看来,我 做这些例子的事情,但显然我有一些东西 丢失。

非常感谢一些帮助。

0 个答案:

没有答案