Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android list and checkbox

Tags:

android

I have simple list to be filled in from the database along with a checkbox. I need a handle to all the checkboxes selected. Whn the CLEAR button is pressed at that point I need the row ids of all the selected check boxes to delete them. To do this : My list.xml file looks like this :

< 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>

and my data_entry.xml looks like this:

 <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>

Now: I have list.java file where I am populating the list as follows:

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);
}

Now where do i give the handle to the heckbox cause anywhere else it would give me a null exception as the data_entry contains the checkboxes. Plus I need a listener to handle the checkbox status? I am just stuck at this point with no clue..

like image 972
Prens Avatar asked Jun 24 '10 17:06

Prens


1 Answers

Rather than rolling your own, why not just use a standard ListView with CHOICE_MODE_MULTIPLE enabled?

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

You can then ask the listView for the checked items.

listView.getCheckedItemPositions();
like image 51
Cheryl Simon Avatar answered Oct 17 '22 15:10

Cheryl Simon