The way you are using your code is not going to work... When dealing with a listview you pretty much always want to be dealing with the adapter directly... For example, you should never call the adapter's getView() method, as that creates a new view based on the data in your adapter.
If you want to have UI interaction in your listview you are most likely going to need to write your own adapter subclass so you can customize the getView() method. In there you can handle code for the checkbox to update the adapter's data when it is clicked, and then call notifyDataSetChanged() on the adapter. The listview is simply a UI representation of your data. Your adapter is the data that the listview uses to display the data. If you just change the listview but not the adapter's data then you will lose the changes when you scroll the listview. Thanks, Justin Anderson MagouyaWare Developer http://sites.google.com/site/magouyaware On Wed, May 16, 2012 at 4:26 PM, chronogps <[email protected]> wrote: > I want to manage checkbox and edittext in a ListView. > > I fill the list calling fill(), user (un)check and modify content of each > line, then I want to save modifications calling read(). Here is a sample > code. > > What is the way to interact with the listview and get the modified content > ? > > Thank you for your help ! > > ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, > String>>(); > > public void onCreate(Bundle savedInstanceState) > { > super.onCreate(savedInstanceState); > > > setContentView(R.layout.main); > mContext = this; > managecontent(); > } > > void fill() > { > // fill the list > HashMap<String, String> map; > > mylist.removeAll(mylist); > map = new HashMap<String, String>(); > map.put("choice", "choice#1"); > map.put("valeur", "123"); > mylist.add(map); > map = new HashMap<String, String>(); > map.put("choice", "choice#2"); > map.put("valeur", "345"); > mylist.add(map); > ListView list = (ListView) findViewById(R.id.choicelist); > SimpleAdapter listAdapter = new SimpleAdapter(mContext, mylist, > R.layout.line, > new String[] {"choice","valeur"}, > new int[] {R.id.choice,R.id.value}); > list.setAdapter(listAdapter); > } > void read() > { > // read the list / change content by program > View listItem; > CheckBox c; > EditText e; > String title; > ListView list = (ListView) findViewById(R.id.choicelist); > SimpleAdapter listAdapter = (SimpleAdapter) list.getAdapter(); > if (listAdapter == null) > return; > for (int i = 0; i < listAdapter.getCount(); i++) > { > listItem = listAdapter.getView((int) i, null, list); > if (listItem!=null) > { > c=(CheckBox)listItem.findViewById(R.id.choice); > if (c!=null) > { > title=c.getText().toString(); // get the original label : choice#1 > then choice#2 > if (!c.isChecked()) > { > c.setText("change !"); // no effect ! > c.setChecked(true); // no effect ! > } > e=(EditText)listItem.findViewById(R.id.value); > if (e!=null) > { > title=e.getText().toString();// always get the orignal content : 123 > then 345 (not the data user set in the EditText item) > e.setText("X");// no effect ! > } > } > } > } > } > > *line.xml :* > > <?xml version="1.0" encoding="utf-8"?> > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" > android:orientation="horizontal" > android:layout_width="fill_parent" > android:layout_height="wrap_content"> > <CheckBox > android:id="@+id/choice" > android:layout_width="wrap_content" > android:layout_height="wrap_content" android:checked="false" > android:clickable="true"/> > <EditText > android:id="@+id/value" > android:layout_width="wrap_content" > android:layout_height="wrap_content" > android:layout_weight="1" > android:ems="10" > > <requestFocus /> > </EditText> > </LinearLayout> > > > *mail.xml :* > > <ScrollView > xmlns:android="http://schemas.android.com/apk/res/android" > android:layout_height="fill_parent" android:layout_width="fill_parent"> > <RelativeLayout android:layout_height="fill_parent" > android:id="@+id/RelativeLayout01" android:padding="5sp" > android:layout_width="fill_parent"> > > <ListView > android:id="@+id/choicelist" > android:layout_width="fill_parent" > android:layout_height="200dp" android:choiceMode="multipleChoice" > android:clickable="true" android:focusable="true"> > </ListView> > > </RelativeLayout> > </ScrollView> > > -- > You received this message because you are subscribed to the Google > Groups "Android Developers" group. > To post to this group, send email to [email protected] > To unsubscribe from this group, send email to > [email protected] > For more options, visit this group at > http://groups.google.com/group/android-developers?hl=en -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en

