0

ねえ、私はAlphabetIndexerでFastScrollerを実装しようとしています。そして、リストビューで500件の連絡先を使用してテストしています。

また、高速スクロールしようとすると、次のエラーが返されます。

java.lang.IllegalStateException:行0からフィールドスロットを取得するcol0が失敗しました

この方法では:

@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にも表示されます。

エラー/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);
            }
        }

カーソルはnullでも閉じていません(ログメッセージが出力されます)。

完全なLOGCAT!太線はエラーが表示される場所です。これは、投稿の最初に投稿された最初のメソッドです。

07-14 09:40:49.042:ERROR / AndroidRuntime(24098):致命的な例外:メイン07-14 09:40:49.042:ERROR / AndroidRuntime(24098):java.lang.IllegalStateException:行0からフィールドスロットを取得col 0失敗07-1409:40:49.042:ERROR / AndroidRuntime(24098):android.database.CursorWindow.getLong_native(ネイティブメソッド)07-14 09:40:49.042:ERROR / AndroidRuntime(24098):android.databaseで。 CursorWindow.getLong(CursorWindow.java:380)07-14 09:40:49.042:ERROR / AndroidRuntime(24098):at android.database.AbstractWindowedCursor.getLong(AbstractWindowedCursor.java:108)07-14 09:40:49.042: ERROR / AndroidRuntime(24098):android.database.AbstractCursor.moveToPosition(AbstractCursor.java:194)07-14 09:40:49.042:ERROR / 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:ERROR / AndroidRuntime(24098):android.widget.FastScroller.scrollTo(FastScroller.java:324)07-14 09:40:49.042:ERROR / AndroidRuntime(24098):androidで。 widget.FastScroller.onTouchEvent(FastScroller.java:471)07-14 09:40:49.042:ERROR / AndroidRuntime(24098):android.widget.AbsListView.onTouchEvent(AbsListView.java:2104)07-14 09:40: 49.042:ERROR / AndroidRuntime(24098):android.widget.ListView.onTouchEvent(ListView.java:3446)07-14 09:40:49.042:ERROR / AndroidRuntime(24098):android.view.View.dispatchTouchEvent(View .java:3885)07-14 09:40:49.042:ERROR / AndroidRuntime(24098):android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:903)07-14 09:40:49.042:ERROR / AndroidRuntime(24098) ):android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)07-1409:40:49で。042:ERROR / AndroidRuntime(24098):android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)07-14 09:40:49.042:ERROR / AndroidRuntime(24098):android.view.ViewGroup.dispatchTouchEvent(ViewGroup .java:942)07-14 09:40:49.042:ERROR / AndroidRuntime(24098):android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)07-14 09:40:49.042:ERROR / 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):android.app.Activity.dispatchTouchEvent(Activity.java:2096)07-14 09:40: 49.042:ERROR / 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:ERROR / AndroidRuntime(24098):android.view.ViewRoot.handleMessage(ViewRoot.java:1878)07-14 09:40:49.042:ERROR / AndroidRuntime(24098):android.os .Handler.dispatchMessage(Handler.java:99)07-14 09:40:49.042:ERROR / AndroidRuntime(24098):at 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:ERROR / AndroidRuntime(24098):atjava.lang.reflect.Method。invoke(Method.java:507)07-14 09:40:49.042:ERROR / AndroidRuntime(24098):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:839)07-14 09: 40:49.042:ERROR / AndroidRuntime(24098):com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)07-14 09:40:49.042:ERROR / AndroidRuntime(24098):dalvik.system .NativeStart.main(ネイティブメソッド)

どうすれば解決できますか?ありがとう!

4

2 に答える 2

11

CursorWindowクラスはクエリごとに1MBのデータの読み取りしかサポートしていないため、エラーが発生していました。そのため、クエリを最適化する必要がありました。

私はデータベース内のデータ、リストビュー内の現在のビューのみを検索していたので、すべてのデータをクエリする必要はありませんでした。

于 2011-07-17T04:15:45.227 に答える
0

を呼び出してカーソルを設定しましたsetCursor(cursor)か? この時点でカーソルは有効ですか?

于 2011-07-14T12:03:02.577 に答える