Эй, я пытаюсь реализовать 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 (собственный метод)
Как я могу решить это? Спасибо!