0

次のコードを実装しようとしています

activity.java ファイル内

      DatabaseEvent mDbHelper = new DatabaseEvent(getApplicationContext());
      mDbHelper.open();
      Cursor notesCursor = mDbHelper.fetchEvent();
             startManagingCursor(notesCursor);
        String[] from = new String[]{DatabaseEvent.KEY_ETITLE, DatabaseEvent.KEY_DISTANCE, DatabaseEvent.KEY_IMGNAME, DatabaseEvent.KEY_DESCRIPTION, DatabaseEvent.KEY_EID};
            int[] to = new int[]{R.id.title, R.id.duration, R.id.list_image, R.id.artist, R.id.id};
            SimpleCursorAdapter event = 
                    new SimpleCursorAdapter(getApplicationContext(), R.layout.list_row, notesCursor, from, to);

DatabaseEvent.java 内

               public long createEvent(String title, String distance, String imgname, String description, String eid) {
        ContentValues initialValues = new ContentValues();
        initialValues.put(KEY_ETITLE, title);
        initialValues.put(KEY_DISTANCE, distance);
        initialValues.put(KEY_IMGNAME, imgname);
        initialValues.put(KEY_DESCRIPTION, description);
        initialValues.put(KEY_EID, eid);

          Log.v("INFO1","inserting db");
        return mDb.insert(EVENT_TABLE, null, initialValues);

    }


         public Cursor fetchEvent() {
         Log.v("INFO1","fetching db");
         Cursor mCursor = mDb.query(EVENT_TABLE, new String[] {KEY_ROWID, KEY_ETITLE, KEY_DISTANCE,
                KEY_IMGNAME, KEY_DESCRIPTION, KEY_EID}, null, null,null,null, KEY_DISTANCE+" ASC");

        return mCursor;


    }

logcat では、ログ メッセージ "inserting db" が 3 回出力されていることは、実際にデータベースに追加されたデータの日付を意味していることがはっきりとわかりますが、ログ メッセージ "fetching db" が 1 回出力され、流れるエラーが表示されます。

             CursorIndexOutOfBoundException index -1, requsted, with a size of 60,

moveToFirst() や moveToNext() などの別の関数を試しましたが、それでも問題を解決できませんでした。誰かが私に手を差し伸べることができました。どんな助けも大歓迎です!

4

1 に答える 1

2

含めるのを忘れたmCursor.moveToFirst();

コードを次のように変更します

   public Cursor fetchEvent() {
         Log.v("INFO1","fetching db");
         Cursor mCursor = mDb.query(EVENT_TABLE, new String[] {KEY_ROWID, KEY_ETITLE, KEY_DISTANCE,
                KEY_IMGNAME, KEY_DESCRIPTION, KEY_EID}, null, null,null,null, KEY_DISTANCE+" ASC");
        mCursor.moveToFirst();
        return mCursor;


    }
于 2012-06-17T17:13:56.833 に答える