2013-01-21 58 views
1

我有一個列表視圖,顯示來自數據庫的記錄。列表視圖中的每一行都有一個複選框。我如何...在ListView中刪除多個選定的項目

  1. 創建一個顯示所選項目值的Toast消息?
  2. 識別用戶在列表視圖中選擇的記錄?
  3. 遍歷每個選定的項目,並從數據庫中只刪除在列表視圖中選擇的行?

我一直在這裏下面這個有用的教程://http://www.vogella.com/articles/AndroidSQLite/article.html

public class PhoneNumberDataBaseListView extends ListActivity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     NumbersDataSource datasource = new NumbersDataSource(this); 
     datasource.open(); 
     String number = "123"; 
     datasource.createNumber(number); 
     List<Number> values = datasource.getAllNumbers(); 
     ArrayAdapter<Number> adapter = new ArrayAdapter<Number>(this, android.R.layout.simple_list_item_multiple_choice, values); 
     setListAdapter(adapter); 
    } 

    public void deleteNumber() { 
     NumbersDataSource datasource = new NumbersDataSource(this); 
     datasource.open(); 
     ListView LV = (ListView) findViewById(android.R.id.list); 
     List<Number> values = datasource.getAllNumbers(); 
     ArrayAdapter<Number> adapter = new ArrayAdapter<Number>(this, android.R.layout.simple_list_item_multiple_choice, values); 
     setListAdapter(adapter); 

     SparseBooleanArray checkedItems = LV.getCheckedItemPositions(); 
     for (int i = 0; i < checkedItems.size(); i++) { 
      if(checkedItems.valueAt(i)) { 
       Number item = adapter.getItem(i); 
       Toast t = Toast.makeText(this, item.getNumber().toString(), Toast.LENGTH_LONG); 
       t.show(); 
      } 
     } 
    } 

回答

0

方法getCheckedItemPositions()返回SparseBooleanArray指示哪些項目被檢查(如果特定位置上的項目被選中,那麼在該數組上調用的方法valueAt(position)返回true)。從你下面的教程類將對DBAdapter爲您提供deleteTitle(長ROWID),你應該使用acheive你want.Therefore你的代碼看起來應該或多或少像這樣的方法:

SparseBooleanArray checkedItems = listView.getCheckedItemPositions(); 
for (int i = 0; i < checkedItems.size(); i++) { 
    if(checkedItems.valueAt(i)) { 
     db.deleteTitle(adapter.getItemId(i)); 
    } 
} 

當然SimpleCursorAdapter也應該將對DBAdapter中存儲在對象屬性中,以便您可以從兩種方法(onCreate和deleteRecord)訪問它們。順便說一下,傳遞給deleteRecord方法的View參數是不需要的。

+0

你好,感謝您的評論..教程我最初以下結束了對我沒有工作,所以我開始使用另一個教程,但我仍然無法刪除列表視圖中選擇的項目,甚至獲取值所選項目...我更新了我的代碼和教程網址。 – thedeepfield