-1

ListViewから選択すると、データベースエントリを削除する際に問題が発生しました...2つのクラスがViewContentActivity.classあります。DBHelper.class

私のViewContentActivity.class中で、私はそれを拡張してListActivityメソッドを追加しますonListItemClick

そして私はこのコードを入れました、

protected void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);

    DBHelper helper = new DBHelper(this);
    database = helper.getWritableDatabase();        


    Cursor c = (Cursor)l.getItemAtPosition(position);
    int _id = c.getInt(c.getColumnIndex(helper.COL_ID));
    String nameList = c.getString(c.getColumnIndex(helper.COL_NAMA));
    helper.deleteData(database, _id);       
    Toast.makeText(this, "Data " + nameList + " removed" , Toast.LENGTH_SHORT).show();

}

私の中でDBHelper.class、私はこのようなものを削除するメソッドを作成します。

public void deleteData(SQLiteDatabase db, int id)
{
    db.delete(TABLE_PEKERJA, COL_ID + " = " +id, null);
}

実行すると、エラーが発生しました...カーソルを宣言する前にエラーが表示されました

//Error here
Cursor c = (Cursor)l.getItemAtPosition(position);
int _id = c.getInt(c.getColumnIndex(helper.COL_ID));
String nameList = c.getString(c.getColumnIndex(helper.COL_NAMA));
helper.deleteData(database, _id);       
Toast.makeText(this, "Data " + nameList + " removed" , Toast.LENGTH_SHORT).show();


02-09 14:26:01.449: E/AndroidRuntime(13977):    at    com.example.untukmuna.ViewContentActivity.onListItemClick(ViewContentActivity.java:69)
02-09 14:33:02.419: E/AndroidRuntime(14584): FATAL EXCEPTION: main
02-09 14:33:02.419: E/AndroidRuntime(14584): java.lang.ClassCastException:      java.lang.String
02-09 14:33:02.419: E/AndroidRuntime(14584):    at com.example.untukmuna.ViewContentActivity.onListItemClick(ViewContentActivity.java:69)
02-09 14:33:02.419: E/AndroidRuntime(14584):    at android.app.ListActivity$2.onItemClick(ListActivity.java:319)
02-09 14:33:02.419: E/AndroidRuntime(14584):    at android.widget.AdapterView.performItemClick(AdapterView.java:284)02-09 14:33:02.419: E/AndroidRuntime(14584):    at android.widget.ListView.performItemClick(ListView.java:3744)
02-09 14:33:02.419: E/AndroidRuntime(14584):    at android.widget.AbsListView$PerformClick.run(AbsListView.java:1991)
02-09 14:33:02.419: E/AndroidRuntime(14584):    at android.os.Handler.handleCallback(Handler.java:587)
02-09 14:33:02.419: E/AndroidRuntime(14584):    at android.os.Handler.dispatchMessage(Handler.java:92)
02-09 14:33:02.419: E/AndroidRuntime(14584):    at android.os.Looper.loop(Looper.java:130)
02-09 14:33:02.419: E/AndroidRuntime(14584):    at android.app.ActivityThread.main(ActivityThread.java:3687)
02-09 14:33:02.419: E/AndroidRuntime(14584):    at java.lang.reflect.Method.invokeNative(Native Method)
02-09 14:33:02.419: E/AndroidRuntime(14584):    at java.lang.reflect.Method.invoke(Method.java:507)
02-09 14:33:02.419: E/AndroidRuntime(14584):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:878)
02-09 14:33:02.419: E/AndroidRuntime(14584):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:636)
02-09 14:33:02.419: E/AndroidRuntime(14584):    at dalvik.system.NativeStart.main(Native Method)
02-09 14:44:14.639: W/dalvikvm(15238): threadid=1: thread exiting with uncaught exception (group=0x40157560)
02-09 14:44:14.649: E/AndroidRuntime(15238): FATAL EXCEPTION: main
02-09 14:44:14.649: E/AndroidRuntime(15238): java.lang.ClassCastException: java.lang.String
02-09 14:44:14.649: E/AndroidRuntime(15238):    at com.example.untukmuna.ViewContentActivity.onListItemClick(ViewContentActivity.java:69)
02-09 14:44:14.649: E/AndroidRuntime(15238):    at android.app.ListActivity$2.onItemClick(ListActivity.java:319)
02-09 14:44:14.649: E/AndroidRuntime(15238):    at android.widget.AdapterView.performItemClick(AdapterView.java:284)
02-09 14:44:14.649: E/AndroidRuntime(15238):    at android.widget.ListView.performItemClick(ListView.java:3744)
02-09 14:44:14.649: E/AndroidRuntime(15238):    at android.widget.AbsListView$PerformClick.run(AbsListView.java:1991)
02-09 14:44:14.649: E/AndroidRuntime(15238):    at android.os.Handler.handleCallback(Handler.java:587)
02-09 14:44:14.649: E/AndroidRuntime(15238):    at android.os.Handler.dispatchMessage(Handler.java:92)
02-09 14:44:14.649: E/AndroidRuntime(15238):    at android.os.Looper.loop(Looper.java:130)
02-09 14:44:14.649: E/AndroidRuntime(15238):    at android.app.ActivityThread.main(ActivityThread.java:3687)
02-09 14:44:14.649: E/AndroidRuntime(15238):    at java.lang.reflect.Method.invokeNative(Native Method)
02-09 14:44:14.649: E/AndroidRuntime(15238):    at java.lang.reflect.Method.invoke(Method.java:507)
02-09 14:44:14.649: E/AndroidRuntime(15238):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:878)
02-09 14:44:14.649: E/AndroidRuntime(15238):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:636)
02-09 14:44:14.649: E/AndroidRuntime(15238):    at dalvik.system.NativeStart.main(Native Method)

これが私のログメッセージです...私もそれを読む方法がわかりません...クリックできるログだけを見つけてください...

この問題を解決する方法..??うーん

4

2 に答える 2

1

以下のコードを試してください

db.delete(TableData.DATABASE_TABLE_NAME, "Id=? AND QstnrId=? AND QstnId=?",
          new String[] { Id.toString(), QuestionnaireId, QuestionId });
于 2013-02-09T07:46:09.717 に答える
0

あなたの例外に基づいて、あなたのリストはカーソルではなく文字列を保存していると思います。

それ以外の

Cursor c = (Cursor)l.getItemAtPosition(position);
int _id = c.getInt(c.getColumnIndex(helper.COL_ID));
String nameList = c.getString(c.getColumnIndex(helper.COL_NAMA));

試す

String nameList = (String) l.getItemAtPosition(position);
于 2013-02-09T07:49:29.100 に答える