2011-07-26 40 views
2

這是我的列表佈局:如何實現複選框ListView中的Android刪除時listItems

<?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 
    <LinearLayout android:layout_width="fill_parent" android:id="@+id/linearLayout1"    
     android:layout_height="wrap_content"> 
    <LinearLayout android:layout_width="wrap_content" android:id="@+id/linearLayout2" 
     android:layout_height="fill_parent"> 
    <CheckBox android:id="@+id/checkBox1" android:layout_width="wrap_content" 
    android:layout_height="wrap_content"></CheckBox> 
    </LinearLayout> 
    <LinearLayout android:layout_width="wrap_content" android:id="@+id/linearLayout3" android:layout_height="fill_parent" android:orientation="vertical"> 
     <TextView android:text="TextView" android:id="@+id/row1" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> 
     <TextView android:text="TextView" android:id="@+id/row2"  android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> 
    </LinearLayout> 
    </LinearLayout> 

</LinearLayout> 

雖然我有多餘的佈局,這一切是一個複選框和一對夫婦TextViews的。我希望每個listItem都是可點擊的(就像去一個不同的意圖一樣),但是當我在我的活動中單擊一個按鈕(DELETE BUTTON)時,我希望能夠顯示覆選框並選擇要刪除和刪除的項目。示例代碼讚賞。

Java代碼:

adapter = new SimpleAdapter(this, painItems, R.layout.mylistlayout, 
      from, to); 
    listthings.setAdapter(adapter); 
    listthings.setOnItemClickListener(this); 
    public void onItemClick(AdapterView<?> a, View v, int position, long id) { 
    Intent intent = new Intent(this, Item1.class); 
    intent.putExtra("com.painLogger.painLevel", painLevelString); 
    intent.putExtra("com.painLogger.painTime", timeOfPainString); 
    intent.putExtra("com.painLogger.treatment", textTreatmentString); 
    intent.putExtra("painLocation", painLocation); 
    startActivity(intent); 
} 
+0

這在SO上已經問過很多次了。 –

回答

3

刪除選中的項目

private void deleteCheckedItems() { 
    int count = this.mainListView.getAdapter().getCount(); 
    for (int i = 0; i < count; i++) { 
     if (this.mainListView.isItemChecked(i)) { 
      painItems.remove(i) 
     } 
    } 
} 

更多信息:http://developer.android.com/reference/android/widget/AbsListView.html#isItemChecked(int

,然後通知適配器更新:

adapter.notifyDataSetChanged(); 

公共無效notifyDataSetChanged()

自:API級別1通知所附的觀點,即基礎數據 已經改變,它應該自動刷新。

+0

我如何刪除位置i上的項目? – Kgrover

+0

對不起,也許我不清楚這一點。我只需要從我的列表中刪除它。有沒有這種方法或方法來做到這一點? – Kgrover

+0

http://stackoverflow.com/questions/112503/how-do-i-remove-objects-from-an-array-in-java –