-1

私のアプリには SQLite データベースがあり、ID、タイトルなどのデータを別のアクティビティに転送する方法を知りたいです。

これまでの私のコードは次のとおりです。

ListView lv = getListView();

lv.setOnItemClickListener(new AdapterView.OnItemClickListener() 
{
    public void onItemClick(AdapterView<?> av, View v, int pos, long id) 
    {
        onListItemClick(v,pos,id);
    }
    protected void onListItemClick(View v, int pos, long id) 
    {
        Intent i = new Intent(context, Table.class);
        i.putExtra("Value1", c.getString(c.getColumnIndex("title")));
        startActivity(i); 

    }
});

しかし、私はエラーが発生しています。

01-29 12:25:46.511: E/AndroidRuntime(26478): FATAL EXCEPTION: main
01-29 12:25:46.511: E/AndroidRuntime(26478): android.database.CursorIndexOutOfBoundsException: Index 50 requested, with a size of 50
01-29 12:25:46.511: E/AndroidRuntime(26478):    at android.database.AbstractCursor.checkPosition(AbstractCursor.java:580)
01-29 12:25:46.511: E/AndroidRuntime(26478):    at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:214)
01-29 12:25:46.511: E/AndroidRuntime(26478):    at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:41)
01-29 12:25:46.511: E/AndroidRuntime(26478):    at com.example.studentdatabase.MainActivity$2.onListItemClick(MainActivity.java:90)
01-29 12:25:46.511: E/AndroidRuntime(26478):    at com.example.studentdatabase.MainActivity$2.onItemClick(MainActivity.java:87)
01-29 12:25:46.511: E/AndroidRuntime(26478):    at android.widget.AdapterView.performItemClick(AdapterView.java:284)
01-29 12:25:46.511: E/AndroidRuntime(26478):    at android.widget.ListView.performItemClick(ListView.java:3513)
01-29 12:25:46.511: E/AndroidRuntime(26478):    at android.widget.AbsListView$PerformClick.run(AbsListView.java:1812)
01-29 12:25:46.511: E/AndroidRuntime(26478):    at android.os.Handler.handleCallback(Handler.java:587)
01-29 12:25:46.511: E/AndroidRuntime(26478):    at android.os.Handler.dispatchMessage(Handler.java:92)
01-29 12:25:46.511: E/AndroidRuntime(26478):    at android.os.Looper.loop(Looper.java:123)
01-29 12:25:46.511: E/AndroidRuntime(26478):    at android.app.ActivityThread.main(ActivityThread.java:3683)
01-29 12:25:46.511: E/AndroidRuntime(26478):    at java.lang.reflect.Method.invokeNative(Native Method)
01-29 12:25:46.511: E/AndroidRuntime(26478):    at java.lang.reflect.Method.invoke(Method.java:507)
01-29 12:25:46.511: E/AndroidRuntime(26478):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
01-29 12:25:46.511: E/AndroidRuntime(26478):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
01-29 12:25:46.511: E/AndroidRuntime(26478):    at dalvik.system.NativeStart.main(Native Method)

助けてください、ありがとう。

4

2 に答える 2

0

あなたが入れたコードは、ここで間違っているわけではありません。カーソルが指している場所です。Cursor 宣言の後、moveToFirst() を呼び出す必要があります。

cursor.moveToFirst()
于 2013-01-29T12:56:35.663 に答える
0

カーソル上の位置を指す必要があります

cursor.moveToFirst()

また、カーソル内のデータを検証して、さらなる例外を回避してください。これを見る

于 2013-01-29T13:09:46.010 に答える