Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android从ListView中删除数据库行_Java_Android_Database_Eclipse_Listview - Fatal编程技术网

Java Android从ListView中删除数据库行

Java Android从ListView中删除数据库行,java,android,database,eclipse,listview,Java,Android,Database,Eclipse,Listview,当我从ListView中选择时,我遇到了删除数据库条目的问题…我得到了两个类,分别是ViewContentActivity.class和DBHelper.class 在我的ViewContentActivity.class中,我将其扩展到ListActivity,并添加方法onListItemClick 我把这个密码 protected void onListItemClick(ListView l, View v, int position, long id) { super.onLi

当我从ListView中选择时,我遇到了删除数据库条目的问题…我得到了两个类,分别是
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)
这是我所有的日志信息…我也不知道如何阅读…只找到任何可以点击的日志

如何解决这个问题..嗯

试试下面的代码

db.delete(TableData.DATABASE_TABLE_NAME, "Id=? AND QstnrId=? AND QstnId=?",
          new String[] { Id.toString(), QuestionnaireId, QuestionId });

基于您的异常,我猜您的列表存储的是字符串,而不是游标

而不是

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


错误是什么?您的日志消息不完整。如果让我猜的话,我会说你正试图将列表项之一转换为游标对象。好的,等等,我会为你发布日志消息。好的@Karakuri这是我的日志。你确定你的每个列表项都是游标对象吗?@CChi我不是很确定……但我也遵循其他教程。他们说,通过使用游标可以访问数据库中的项…因为我想要的是表id。在我的listview中,我只显示数据库中的一列。嘿@CChi我在listview中得到了不同的删除方式…但问题是,它总是删除我listview中的第一项
String nameList = (String) l.getItemAtPosition(position);