java.lang.IllegalStateException: получить слот поля из строки 0 col 0 не удалось - PullRequest
0 голосов
/ 12 июля 2011

Эй, я пытаюсь реализовать FastScroller с AlphabetIndexer. И я тестирую это с 500 контактами в виде списка.

И при попытке быстрой прокрутки он возвращает следующую ошибку:

java.lang.IllegalStateException: получить слот поля из строки 0 col 0 не удалось

В этом методе:

@Override
public int getPositionForSection(int section)
{
    return mAlphaIndexer.getPositionForSection(section);
}

Я предпочитаю это: mAlphaIndexer.getPositionForSection(section) возвращает '0', потому что я поставил Log с этой строкой. И ошибка появилась в журнале, а не в возврате.

Edit:

В LogCat появляется ошибка, которая меня смущает и беспокоит, потому что я пытаюсь установить изображения, текст и флажки в виде списка, поэтому для каждого просмотра я устанавливаю изображение, текстовое представление и флажок. И эта ошибка возникла:

ОШИБКА / CursorWindow (24241): необходимо увеличить: mSize = 1048576, размер = 7702, freeSpace () = 3474, numRows = 135 ОШИБКА / CursorWindow (24241): нет растет, так как уже есть 135 строк, максимальный размер 1048576 ОШИБКА / Курсор (24241): не удалось выделить 7702 байта для BLOB-объекта при 134,5

.

Полагаю, это из-за его размера, из-за того, что я тестирую создание более 1000 элементов в ListView. Может ли это быть возможной ошибкой?

это также показывает на LogCat:

ОШИБКА / CursorWindow (24098): неверный запрос для слота поля 0,0. numRows = 0, numColumns = 0

Вот мой конструктор CursorAdapter:

public MyCursorAdapter(Context context, Cursor cursor, ArrayList<Integer> ids) 
        {
            super(context, cursor);
            try
            {           

                mAlphaIndexer = new AlphabetIndexer(cursor, cursor.getColumnIndexOrThrow("Name")," ABCDEFGHIJKLMNOPQRSTUVWXYZ");
            mAlphaIndexer.setCursor(cursor);
            if(!cursor.isClosed() && cursor != null)
            {
                Log.i("MyCursorAdapter", "Cursor opened and not null " + cursor);
            }
            this.mSelectedIndividuals = ids;
            catch(IllegalArgumentException ex)
            {
                Log.e("MyCursorAdapter", "Error: " + ex);
            }
        }

Курсор не является нулевым и не закрыт (сообщение журнала печатается).

FULL LOGCAT! Жирной линией обозначена ошибка, это первый метод, опубликованный в начале сообщения.

07-14 09: 40: 49.042: ОШИБКА / AndroidRuntime (24098): ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: основное 07-14 09: 40: 49.042: ОШИБКА / AndroidRuntime (24098): java.lang.IllegalStateException: получить слот поля из строки 0 col 0 не удалось 07-14 09: 40: 49.042: ОШИБКА / AndroidRuntime (24098): в android.database.CursorWindow.getLong_native (собственный метод) 07-14 09: 40: 49.042: ОШИБКА / AndroidRuntime (24098): в android.database.CursorWindow.getLong (CursorWindow.java:380) 07-14 09: 40: 49.042: ОШИБКА / AndroidRuntime (24098): в android.database.AbstractWindowedCursor.getLong (AbstractWindowedCursor.java:108) 07-14 09: 40: 49.042: ОШИБКА / AndroidRuntime (24098): в android.database.AbstractCursor.moveToPosition (AbstractCursor.java:194) 07-14 09: 40: 49.042: ОШИБКА / AndroidRuntime (24098): в android.widget.AlphabetIndexer.getPositionForSection (AlphabetIndexer.java:202) 07-14 09: 40: 49.042: ОШИБКА / AndroidRuntime (24098): в com.test.myapplication.MyCursorAdapter.getPositionForSection (MyCursorAdapter.java:181) 07-14 09: 40: 49.042: ОШИБКА / AndroidRuntime (24098): в android.widget.FastScroller.scrollTo (FastScroller.java:324) 07-14 09: 40: 49.042: ОШИБКА / AndroidRuntime (24098): в android.widget.FastScroller.onTouchEvent (FastScroller.java:471) 07-14 09: 40: 49.042: ОШИБКА / AndroidRuntime (24098): в android.widget.AbsListView.onTouchEvent (AbsListView.java:2104) 07-14 09: 40: 49.042: ОШИБКА / AndroidRuntime (24098): в android.widget.ListView.onTouchEvent (ListView.java:3446) 07-14 09: 40: 49.042: ОШИБКА / AndroidRuntime (24098): в android.view.View.dispatchTouchEvent (View.java:3885) 07-14 09: 40: 49.042: ОШИБКА / AndroidRuntime (24098): в android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:903) 07-14 09: 40: 49.042: ОШИБКА / AndroidRuntime (24098): в android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:942) 07-14 09: 40: 49.042: ОШИБКА / AndroidRuntime (24098): в android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:942) 07-14 09: 40: 49.042: ОШИБКА / AndroidRuntime (24098): в android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:942) 07-14 09: 40: 49.042: ОШИБКА / AndroidRuntime (24098): в android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:942) 07-1409: 40: 49.042: ОШИБКА / AndroidRuntime (24098): в com.android.internal.policy.impl.PhoneWindow $ DecorView.superDispatchTouchEvent (PhoneWindow.java:1691) 07-14 09: 40: 49.042: ОШИБКА / AndroidRuntime (24098): в com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent (PhoneWindow.java:1125) 07-14 09: 40: 49.042: ОШИБКА / AndroidRuntime (24098): в android.app.Activity.dispatchTouchEvent (Activity.java:2096) 07-14 09: 40: 49.042: ОШИБКА / AndroidRuntime (24098): в com.android.internal.policy.impl.PhoneWindow $ DecorView.dispatchTouchEvent (PhoneWindow.java:1675) 07-14 09: 40: 49.042: ОШИБКА / AndroidRuntime (24098): в android.view.ViewRoot.deliverPointerEvent (ViewRoot.java:2194) 07-14 09: 40: 49.042: ОШИБКА / AndroidRuntime (24098): в android.view.ViewRoot.handleMessage (ViewRoot.java:1878) 07-14 09: 40: 49.042: ОШИБКА / AndroidRuntime (24098): в android.os.Handler.dispatchMessage (Handler.java:99) 07-14 09: 40: 49.042: ОШИБКА / AndroidRuntime (24098): в android.os.Looper.loop (Looper.java:130) 07-14 09: 40: 49.042: ОШИБКА / AndroidRuntime (24098): в android.app.ActivityThread.main (ActivityThread.java:3683) 07-14 09: 40: 49.042: ОШИБКА / AndroidRuntime (24098): в java.lang.reflect.Method.invokeNative (родной метод) 07-14 09: 40: 49.042: ОШИБКА / AndroidRuntime (24098): в java.lang.reflect.Method.invoke (Method.java:507) 07-14 09: 40: 49.042: ОШИБКА / AndroidRuntime (24098): в com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:839) 07-14 09: 40: 49.042: ОШИБКА / AndroidRuntime (24098): в com.android.internal.os.ZygoteInit.main (ZygoteInit.java:597) 07-14 09: 40: 49.042: ОШИБКА / AndroidRuntime (24098): в dalvik.system.NativeStart.main (собственный метод)

Как я могу решить это? Спасибо!

Ответы [ 2 ]

11 голосов
/ 17 июля 2011

Ошибка произошла потому, что класс CursorWindow поддерживает чтение только 1 МБ данных на запрос, поэтому мне пришлось оптимизировать свой запрос.

Я только искал данные в базе данных, для текущих представлений в просмотре списка, поэтому мне не нужно запрашивать все данные.

0 голосов
/ 14 июля 2011

Вы установили курсор, вызвав setCursor(cursor)? Ваш курсор действителен в данный момент времени?

...