Cursor.getType() API ‹ 11 проблем

Я следую ответу, предложенному @JuanSánchez, но столкнулся с проблемой .

Моя проблема - ClassCastException при попытке привести объект android.database.Cursor (c) к CursorWrapper. Точнее, строка кода 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();
            }

        }

Любая помощь, я был бы очень признателен.


person StuStirling    schedule 15.11.2013    source источник


Ответы (1)


Сработало. Супер просто.

Поменяйте местами следующие строки.

Поменять местами CursorWrapper cw = (CursorWrapper)cursor;

Для CursorWrapper cw = new CursorWrapper(cursor);

person StuStirling    schedule 15.11.2013
comment
Вы также могли бы сделать CursorWindow cursorWindow = ((AbstractWindowedCursor)cursor).getWindow();. - person JAB; 11.03.2014