0

我已经创建了一个数据库。一切正常,除了当我删除列表视图上的项目时,该项目消失了,但是当我重新打开它时,该项目仍然存在,因为这不会从数据库中删除。我的 oncreate 方法如下:

 public void onCreate(SQLiteDatabase db) {

        db.execSQL("CREATE TABLE "+ Table_Name + "(" +Column_Id+" INTEGER PRIMARY KEY AUTOINCREMENT, " + name +" TEXT NOT NULL, "
        + date +" TEXT NOT NULL, "+ time +" TEXT NOT NULL, "+ location +" TEXT );");
        Log.d("in on create", "");


    }

我正在使用以下方法从数据库中删除项目

public void deleteEntries(String item) {
    Log.d("in del", "");

    ourSQLiteDatabase.delete(Table_Name, name+" =?"+" AND "+date +" =?"+" AND "+time+" =?"+" AND "+location + "=?",new String[] {item});

}

我从另一个包含列表的类 Detail.java 调用上述方法。

public class Detail extends Activity{
ListView listView;
    int position;
     ArrayAdapter<String> aa;

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.detail);
    listView = (ListView)findViewById(R.id.listView);
    registerForContextMenu(listView);
    Reminder getInfo=new Reminder(this);
    getInfo.open();
    ArrayList<String> mydata=getInfo.getData();
    getInfo.close();
     aa=new ArrayAdapter<String(this,android.R.layout.simple_list_item_1,mydata);
          listView.setAdapter(aa);
    listView.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            position = arg2;
            openContextMenu(listView); 


        }
    } );


}
    public void onCreateContextMenu(ContextMenu menu, View v,
        ContextMenuInfo menuInfo) {

    super.onCreateContextMenu(menu, v, menuInfo);
    menu.setHeaderTitle("Choose Action");
    menu.add(0, 1, 0, "Delete");
    menu.add(0, 2, 1, "Edit");
}

@Override
public boolean onContextItemSelected(MenuItem item) {

      switch (item.getItemId()) {
              case 1:
                  Log.d("in case 1", "");
                    String s = aa.getItem(position).toString();
                        Reminder del = new Reminder(this)
                del.open();
                del.deleteEntries(s);   
                del.close();
                        aa.remove(s);
                        aa.notifyDataSetChanged();
                        Toast.makeText(this, "deleted", Toast.LENGTH_SHORT).show();
                        return(true);
             case 2:
                 Toast.makeText(this, "edit", Toast.LENGTH_SHORT).show();
                   return(true);   
      }
    return super.onContextItemSelected(item);

}

}

在此提醒中是包含 oncreate() 方法和 dleteentries 方法的类的名称。

我知道问题出在 String s 中(我在详细课程中的案例 1 中创建)但我不知道如何解决这个问题。请帮助我。我尝试了很多但仍然无法解决这个问题。

4

1 回答 1

0
   ourSQLiteDatabase.delete(Table_Name, name+" =?",new String[] {item});
于 2013-08-15T12:25:51.140 回答