嘿,我正在尝试使用 AlphabetIndexer 实现 FastScroller。我正在列表视图中使用 500 个联系人对其进行测试。
当试图快速滚动它时,它会返回以下错误:
java.lang.IllegalStateException:从行 0 col 0 获取字段槽失败
在这种方法中:
@Override
public int getPositionForSection(int section)
{
return mAlphaIndexer.getPositionForSection(section);
}
我想这mAlphaIndexer.getPositionForSection(section)
是:返回'0',因为我已经在这条线上放了一个日志。并且错误出现在日志中,不再出现在返回中。
编辑:
LogCat 中显示的错误让我感到困惑和担心,因为我正在尝试在列表视图中设置图像和文本以及复选框,因此对于每个视图,我都设置了一个图像和一个文本视图以及一个复选框。出现了这个错误:
ERROR/CursorWindow(24241): 需要增长:mSize = 1048576, size = 7702, freeSpace() = 3474, numRows = 135 ERROR/CursorWindow(24241): 没有增长,因为已经有 135 行,最大大小 1048576错误/光标(24241):未能在 134,5 处为 blob 分配 7702 字节
我想这是因为它的大小,因为我正在测试在 ListView 中创建超过 1000 个项目。这可能是可能的错误吗?
它还显示在 LogCat 上:
ERROR/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);
}
}
游标既不为空也不关闭(打印日志消息)。
完整的日志!粗线是错误出现的地方,这是帖子开头发布的第一个方法。
07-14 09:40:49.042: ERROR/AndroidRuntime(24098): FATAL EXCEPTION: main 07-14 09:40:49.042: ERROR/AndroidRuntime(24098): java.lang.IllegalStateException: get field slot from row 0 col 0失败 07-14 09:40:49.042: ERROR/AndroidRuntime(24098): at android.database.CursorWindow.getLong_native(Native Method) 07-14 09:40:49.042: ERROR/AndroidRuntime(24098): at 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: ERROR/AndroidRuntime(24098): at android.widget.ListView.onTouchEvent(ListView.java:3446) 07-14 09:40:49.042: ERROR/AndroidRuntime(24098): at 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-14 09:40:49.042: 错误/AndroidRuntime(24098 ): 在 com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1691) 07-14 09:40:49.042: ERROR/AndroidRuntime(24098): 在 com.android.internal.policy。 impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1125) 07-14 09:40:49.042: ERROR/AndroidRuntime(24098): at 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: ERROR/AndroidRuntime(24098): at 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 : ERROR/AndroidRuntime(24098): at android.app.ActivityThread.main(ActivityThread.java:3683) 07-14 09:40:49.042: ERROR/AndroidRuntime(24098): at java.lang.reflect.Method.invokeNative(本机方法)07-14 09:40:49.042:错误/AndroidRuntime(24098):在 java.lang.reflect.Method。调用(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(本机方法)
我该如何解决?谢谢!