2012-04-19 72 views
2

我正在開發一個應用程序來發展我的知識,迄今爲止我創建了一個日曆應用程序,用戶可以在點擊日期時進行預約。然後我有一個刪除按鈕,打開所有約會創建一個新的活動,我有:列表視圖顯示所有約會一個文本視圖顯示所選約會(由用戶選擇刪除)和按鈕刪除。刪除按鈕從sqlite中刪除所有項目,但我只能看到這個工作時,應用程序重新啓動我知道我在我的代碼中缺少別的東西..我如何清除listview在同一時間任何幫助將不勝感激Android - sqlite全部刪除

我的代碼:

刪除所有方法

public void deleteAll() { 

     db.delete(TABLE_NAME, null, null); 
    } 

按鈕代碼:

public void onClick(View v) { 
    switch(v.getId()){ 

    case R.id.removeBtn: 

     dm.deleteAll(); 

     break; 
    } 

謝謝 }

+1

你必須重新查詢光標並更新你的listview與新的 – zapl 2012-04-19 22:02:08

+0

啊所以通過「看到這個工作」你的意思是你沒有看到項目刪除?或者你檢查了數據庫和'deleteAll();'失敗了嗎? – yoshi 2012-04-19 22:04:31

+0

我試過這個{c.requery();}但它一直說光標已被棄用 – Tacit 2012-04-19 22:06:16

回答

3

也許不是最優雅的,但我不建立我的UI在onCreate()。相反,在onCreate()中,我調用另一個方法initializeUI(),這就是我構建用戶界面的地方。然後,只要我做了一些應該反映在界面中的東西(更新數據庫或其他),我只需要再次調用我的方法initializeUI()。

編輯:還應考慮notifyDataSetChanged()爲您的適配器所示例here

1

首先檢查如果你的數據庫是可寫的(getWritableDatabase)

然後檢查你的「表格名」,其實是表名。

然後你可以嘗試使用execSQL(「delete from」+ TABLE_NAME);

如果這不起作用,您可以嘗試關閉數據庫。

終於嘗試把它在交易 beginTransaction(); ..刪除.. endTransaction();

1

如果你實際上是改變從在ListView使用的適配器的數據,您可以使用重新查詢()方法用於填充光標適配器。這應該反映你的改變!

+0

我試過這個c.requery() ;但它一直說Cursor已棄用我將使用什麼 – Tacit 2012-04-20 15:42:27

+0

@Tacit發佈您的所有代碼,以查看我們是否可以幫助您更多! – Caumons 2012-04-20 16:13:19