【问题标题】:Cursor.getType() API < 11 IssuesCursor.getType() API < 11 问题
【发布时间】:2013-11-15 20:16:45
【问题描述】:

我正在关注@JuanSánchez 建议的answer,但我遇到了一个问题。

我的问题是在尝试将 android.database.Cursor 对象 (c) 转换为 CursorWrapper 时出现 ClassCastException。更具体地说,代码行是CursorWrapper cw = (CursorWrapper)c;

        CursorWindow cursorWindow = null;
        int cursorPosition = 0;
        if (android.os.Build.VERSION.SDK_INT < 11) {
            CursorWrapper cw = (CursorWrapper)c;
            Class<?> cursorWrapper = CursorWrapper.class;
            Field mCursor = null;
            try {
                mCursor = cursorWrapper.getDeclaredField("mCursor");
                mCursor.setAccessible(true);
                AbstractWindowedCursor abstractWindowedCursor = (AbstractWindowedCursor)mCursor.get(cw);
                cursorWindow = abstractWindowedCursor.getWindow();
                cursorPosition = abstractWindowedCursor.getPosition();
            } catch (NoSuchFieldException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IllegalArgumentException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }

如有任何帮助,我将不胜感激。

【问题讨论】:

    标签: android android-sqlite android-cursor


    【解决方案1】:

    解决了。超级简单。

    换掉下面几行。

    交换 CursorWrapper cw = (CursorWrapper)cursor;

    发给 CursorWrapper cw = new CursorWrapper(cursor);

    【讨论】:

    • 你也可以做到CursorWindow cursorWindow = ((AbstractWindowedCursor)cursor).getWindow();
    猜你喜欢
    • 2012-07-24
    • 1970-01-01
    • 2012-01-30
    • 2021-02-24
    • 1970-01-01
    • 2023-02-03
    • 1970-01-01
    • 1970-01-01
    • 2019-01-01
    相关资源
    最近更新 更多