2010-06-24 28 views
5

Veritabanından bir onay kutusuyla birlikte doldurulacak basit bir listeye sahibim. Seçilen tüm onay kutularına bir tanıtıma ihtiyacım var. Bu noktada CLEAR düğmesine basıldığında, seçilen tüm onay kutularının satırlarını silmek için bunlara ihtiyacım var. Bunun için: Benim list.xml dosyası şöyle görünür:Android listesi ve onay kutusu

< LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:orientation="vertical" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" > 

<ListView 
      android:id="@id/android:list" 
     android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      /> 

<Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/clearselected" 
     android:text="CLEAR" 
     android:clickable ="false"/> 

</LinearLayout> 

ve benim data_entry.xml şöyle görünür: Şimdi

<LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"> 
      <CheckBox 
      android:id="@+id/CheckBox" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_x="50px" 
      android:layout_y="22px"></CheckBox> 
<TextView android:text="@+id/EntryText" 
      android:id="@+id/EntryText" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textAppearance="?android:attr/textAppearanceLarge" 
      android:textColor="@color/blue"/> 

</LinearLayout> 

: Ben doldurma ediyorum list.java dosyası var liste şöyle:

private void populateList() { 
    Cursor c = db1.getAllList(); 
     String[] fields = new String[]{db1.get_data()}; 

     SimpleCursorAdapter cursorAdapter = new 

    ListAdapter adapter = new SimpleCursorAdapter(this, R.layout.data_entry, c, 
      fields, new int[] {R.id.EntryText}); 


    setListAdapter(adapter); 
} 

Şimdi ben data_entry onay kutularını içerdiğinden başka bir yerde bana boş istisna verecek heckbox nedene kolu veriyorsunuz nerede. Artı onay kutusu durumunu işlemek için bir dinleyiciye ihtiyacım var? Ben sadece bu noktada hiçbir ipucu ile sıkışmış ..

cevap

19

Kendi yuvarlanmadan ziyade, neden sadece CHOICE_MODE_MULTIPLE etkin bir standart ListView kullanmak değil?

listView.setChoiceMode(CHOICE_MODE_MULTIPLE); 
listView.setAdapter(new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_multiple_choice, fields)); 

Daha sonra listeden kontrol edilen öğeler için soru sorabilirsiniz.

listView.getCheckedItemPositions(); 
+0

Teşekkürler, ben de öyle düşünmedim. Peki şimdi bunun için başka bir sorum var. Benim durumumda imleci aşağıda olduğu gibi: özel statik Dize [] alanları; İmleç c = db1.getAllList(); setListAdapter (yeni ArrayAdapter (bu, android.R.layout.simple_list_item_multiple_choice, alanlar)); final Liste Görünümü listesiView = getListView(); \t listView.setItemsCanFocus (false); listView.setChoiceMode (ListView.CHOICE_MODE_MULTIPLE); İmlecin alan dizisindeki değerleri nasıl alabilirim? Basit imleç bağdaştırıcısını kullanırken, orada oradan geçiyor muydu? Teşekkürler Prerna – Prerna

+0

Teşekkürler! Bana gerçekten çok yardımcı oldu. Bende aynı sorun vardı. Ama şimdi bunu nasıl yapacağımı biliyorum. –