Checkbox refresh

Put problem concerning Views, Layouts and other XML-Resources (like AndroidManifest) here.

Checkbox refresh

Postby prash7e7 » Thu Jan 14, 2010 6:39 pm

Hi,
This is my first program in Android. I would really appreciate any help in this regard.

I am developing an application which adds checkbox dynamically, through a EditText box and a button. Following is the code. I have 2 layout xml files. One for the checkbox other for List, button and Edit box.
I am able to add the checkbox entries dynamically without any problem but when I add an item, the checkboxes erase its status (defaulting it to false). Could anyone please let me know how to remember the state of the existing checkboxes when I add a new one.

Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1. public class DynamicCheckboxListView extends ListActivity
  2.  
  3. implements AdapterView.OnItemClickListener{  
  4.  
  5.     CheckBoxAdapter mCheckBoxAdapter ;
  6.  
  7.     private EditText                    newValue;  
  8.  
  9.     private List<String> list = new ArrayList<String>();
  10.  
  11.      
  12.  
  13.     @Override  
  14.  
  15.     public void onCreate(Bundle savedInstanceState) {  
  16.  
  17.         super.onCreate(savedInstanceState);  
  18.  
  19.         setContentView(R.layout.dynamic_list);  
  20.  
  21.         newValue = (EditText) findViewById(R.id.new_value_field);  
  22.  
  23.  
  24.  
  25.         mCheckBoxAdapter = new CheckBoxAdapter(this,
  26.  
  27.                 R.layout.main, list);
  28.  
  29.         setListAdapter(mCheckBoxAdapter);  
  30.  
  31.  
  32.  
  33.         ((ImageButton) findViewById(R.id.button)).setOnClickListener(getBtnClickListener());
  34.  
  35.         getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);      
  36.  
  37.                 final ListView listView = getListView();
  38.  
  39.  
  40.  
  41.                 listView.setItemsCanFocus(false);
  42.  
  43.                 listView.setTextFilterEnabled(true);
  44.  
  45.                 //listView.setOnItemClickListener(this);
  46.  
  47.         }
  48.  
  49.  
  50.  
  51.         public void onItemClick(AdapterView parent, View view, int position, long id) {
  52.  
  53.                 mCheckBoxAdapter.toggle(position);
  54.  
  55.         }
  56.  
  57.    
  58.  
  59.  
  60.  
  61.     private OnClickListener getBtnClickListener() {  
  62.  
  63.         return new OnClickListener() {  
  64.  
  65.             public void onClick(View view) {  
  66.  
  67.                 try {  
  68.  
  69.                         list.add(newValue.getText().toString());
  70.  
  71.                         mCheckBoxAdapter.notifyDataSetChanged();  
  72.  
  73.                 } catch (NullPointerException e) {  
  74.  
  75.                     e.printStackTrace();
  76.  
  77.                         Log.i("[Dynamic Items]", "Tried to add null value");  
  78.  
  79.                 }  
  80.  
  81.             }  
  82.  
  83.         };  
  84.  
  85.        
  86.  
  87.     }  
  88.  
  89.  
  90.  
  91.         private static class CheckBoxAdapter extends ArrayAdapter<String> implements
  92.  
  93.         CompoundButton.OnCheckedChangeListener {
  94.  
  95.  
  96.  
  97.         private static SparseBooleanArray mCheckStates;
  98.  
  99.        
  100.  
  101.         public CheckBoxAdapter(Context context, int resource, List objects) {
  102.  
  103.                 super(context, resource,  objects);
  104.  
  105.                 System.out.println("mCheckStates " + mCheckStates);
  106.  
  107.                 if(mCheckStates == null)
  108.  
  109.                 mCheckStates = new SparseBooleanArray(objects.size());
  110.  
  111.         }
  112.  
  113.        
  114.  
  115.         @Override
  116.  
  117.         public View getView(int position, View convertView, ViewGroup parent) {
  118.  
  119.                 final CheckBox view = (CheckBox) super.getView(position,
  120.  
  121.                                 convertView, parent);
  122.  
  123.                 view.setTag(position);
  124.  
  125.                
  126.  
  127.                 view.setChecked(mCheckStates.get(position, false));
  128.  
  129.                 view.setOnCheckedChangeListener(this);
  130.  
  131.                 return view;
  132.  
  133.         }
  134.  
  135.        
  136.  
  137.         public boolean isChecked(int position) {
  138.  
  139.                 return mCheckStates.get(position, false);
  140.  
  141.         }
  142.  
  143.        
  144.  
  145.         public void setChecked(int position, boolean isChecked) {
  146.  
  147.                 mCheckStates.put(position, isChecked);
  148.  
  149.                 notifyDataSetChanged();
  150.  
  151.         }
  152.  
  153.        
  154.  
  155.         public void toggle(int position) {
  156.  
  157.                 setChecked(position, !isChecked(position));
  158.  
  159.         }
  160.  
  161.        
  162.  
  163.         public void onCheckedChanged(CompoundButton buttonView,
  164.  
  165.                         boolean isChecked) {
  166.  
  167.                 System.out.println("buttonView.getTag()  " + buttonView.getTag() + " " + isChecked);
  168.  
  169.                 mCheckStates.put((Integer) buttonView.getTag(), isChecked);
  170.  
  171.         }
  172.  
  173.         }
  174.  
  175.  
  176.  
  177. }
Parsed in 0.041 seconds, using GeSHi 1.0.8.4


- dynamic_list.xml
Syntax: [ Download ] [ Hide ]
Using xml Syntax Highlighting
  1. <?xml version="1.0" encoding="utf-8"?>  
  2.  
  3. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  4.  
  5.    android:orientation="vertical"  
  6.  
  7.    android:layout_width="fill_parent"  
  8.  
  9.    android:layout_height="fill_parent"  
  10.  
  11.    >  
  12.  
  13.        
  14.  
  15.      
  16.  
  17.      <ListView android:id="@+id/android:list"  
  18.  
  19.        android:layout_width="fill_parent"  
  20.  
  21.        android:layout_height="0px"  
  22.  
  23.        android:layout_weight="1"  
  24.  
  25.        android:cacheColorHint="#00000000">  
  26.  
  27.      </ListView>  
  28.  
  29.    
  30.  
  31.    
  32.  
  33.     <LinearLayout  
  34.  
  35.        android:orientation="horizontal"  
  36.  
  37.        android:layout_width="wrap_content"  
  38.  
  39.        android:layout_height="wrap_content"  
  40.  
  41.        android:layout_marginTop="6px"  
  42.  
  43.        android:layout_marginBottom="8px"  
  44.  
  45.        android:layout_marginLeft="8px"  
  46.  
  47.        android:layout_marginRight="8px"  
  48.  
  49.        android:background="#00000000">  
  50.  
  51.          
  52.  
  53.          
  54.  
  55.         <ImageButton  
  56.  
  57.        android:id="@+id/button"  
  58.  
  59.            android:layout_width="100px"  
  60.  
  61.            android:layout_height="100px"  
  62.  
  63.            android:src="@android:drawable/ic_menu_add"  />  
  64.  
  65.     </LinearLayout>        
  66.  
  67.        
  68.  
  69.     <LinearLayout  
  70.  
  71.        android:orientation="vertical"  
  72.  
  73.        android:layout_width="230px"  
  74.  
  75.        android:layout_height="wrap_content"  
  76.  
  77.        android:layout_marginTop="8px"  
  78.  
  79.        android:layout_marginBottom="8px"  
  80.  
  81.        android:layout_marginLeft="0px"  
  82.  
  83.        android:layout_marginRight="28px"  
  84.  
  85.        android:background="#cccccc00" >  
  86.  
  87.      
  88.  
  89.         <EditText android:id="@+id/new_value_field"  
  90.  
  91.            android:textColor="#020905"  
  92.  
  93.            android:textSize="18sp"  
  94.  
  95.            android:layout_marginTop="6px"  
  96.  
  97.            android:layout_marginBottom="8px"  
  98.  
  99.            android:layout_marginLeft="12px"  
  100.  
  101.            android:layout_marginRight="12px"  
  102.  
  103.            android:layout_width="210px"  
  104.  
  105.            android:layout_height="wrap_content"  
  106.  
  107.            android:layout_weight="1"/>  
  108.  
  109.      
  110.  
  111.     </LinearLayout>  
  112.  
  113. </LinearLayout>  
Parsed in 0.006 seconds, using GeSHi 1.0.8.4


-row.xml

Syntax: [ Download ] [ Hide ]
Using xml Syntax Highlighting
  1. <?xml version="1.0" encoding="utf-8"?>  
  2.  
  3. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  4.  
  5.    android:layout_width="fill_parent"  
  6.  
  7.    android:layout_height="wrap_content"  
  8.  
  9.    android:background="#00000000">  
  10.  
  11.    
  12.  
  13. <CheckBox xmlns:android="http://schemas.android.com/apk/res/android"
  14.  
  15.    android:id="@+android:id/text1"
  16.  
  17.    android:layout_width="fill_parent"
  18.  
  19.    android:layout_height="?android:attr/listPreferredItemHeight"
  20.  
  21.    android:textAppearance="?android:attr/textAppearanceLarge"
  22.  
  23. />
  24.  
  25.  
Parsed in 0.002 seconds, using GeSHi 1.0.8.4
prash7e7
Freshman
Freshman
 
Posts: 2
Joined: Thu Jan 14, 2010 6:12 pm

Top

Return to View, Layout & Resource Problems

Who is online

Users browsing this forum: No registered users and 6 guests