I am creating an Android application. The user interface of my application is below.
When I click the Submit button, I need the selected checkbox and the value of the radio buttons.
Linux example not installed, cc (radio button) checked.
Entries are populated dynamically as a list, but I can't get it to work. There are many problems.
- When I scroll through the list, the switch is automatically selected or canceled so as not to save the state of the switch.
- When the button is pressed, the selected switch and the checkbox do not appear.
Below is my layout, as well as a java program. Suggest me the correct values.

main.xml
<ListView android:id="@+id/my_list" android:layout_width="fill_parent" android:layout_height="199dp" /> <Button android:id="@+id/submit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Submit" />
row.xml
<TextView android:id="@+id/label" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@+id/label" android:layout_toRightOf="@+id/check" android:textSize="20sp" > </TextView> <CheckBox android:id="@+id/check" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_marginLeft="4dip" android:layout_marginRight="10dip" android:focusable="false" android:focusableInTouchMode="false" > </CheckBox> <RadioGroup android:id="@+id/radioSex" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:orientation="horizontal" > <RadioButton android:id="@+id/to" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dip" android:checked="true" android:text="To" /> <RadioButton android:id="@+id/cc" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dip" android:text="CC" /> </RadioGroup>
Myadaptor.java
public class MyAdapter extends ArrayAdapter<Model> { private final List<Model> list; private final Activity context; boolean checkAll_flag = false; boolean checkItem_flag = false; public MyAdapter(Activity context, List<Model> list) { super(context, R.layout.row, list); this.context = context; this.list = list; } static class ViewHolder { protected TextView text; protected CheckBox checkbox; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder = null; if (convertView == null) { LayoutInflater inflator = context.getLayoutInflater(); convertView = inflator.inflate(R.layout.row, null); viewHolder = new ViewHolder(); viewHolder.text = (TextView) convertView.findViewById(R.id.label); viewHolder.checkbox = (CheckBox) convertView .findViewById(R.id.check); viewHolder.checkbox .setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { int getPosition = (Integer) buttonView.getTag(); list.get(getPosition).setSelected( buttonView.isChecked()); } }); convertView.setTag(viewHolder); convertView.setTag(R.id.label, viewHolder.text); convertView.setTag(R.id.check, viewHolder.checkbox); } else { viewHolder = (ViewHolder) convertView.getTag(); } viewHolder.checkbox.setTag(position); viewHolder.text.setText(list.get(position).getName()); viewHolder.checkbox.setChecked(list.get(position).isSelected()); return convertView; }
MainActivity.java
public class MainActivity extends Activity implements OnItemClickListener { ListView listView; ArrayAdapter<Model> adapter; List<Model> list = new ArrayList<Model>(); private RadioGroup radioCcToGroup; private RadioButton radioTypeButton; private Button btn; public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); listView = (ListView) findViewById(R.id.my_list); btn = (Button) findViewById(R.id.submit); btn.setOnClickListener(new View.OnClickListener() { int count = 0; @Override public void onClick(View view) { count = listView.getAdapter().getCount(); for (int i = 0; i < count; i++) { // here i am not able to get the records as getting on onItemClick of the listview } } }); adapter = new MyAdapter(this, getModel()); listView.setAdapter(adapter); listView.setOnItemClickListener(this); } @Override public void onItemClick(AdapterView<?> arg0, View v, int position, long arg3) { TextView label = (TextView) v.getTag(R.id.label); CheckBox checkbox = (CheckBox) v.getTag(R.id.check); Toast.makeText(v.getContext(), label.getText().toString() + " " + isCheckedOrNot(checkbox), Toast.LENGTH_LONG).show(); } private String isCheckedOrNot(CheckBox checkbox) { if (checkbox.isChecked()) return "is checked"; else return "is not checked"; } private List<Model> getModel() { list.add(new Model("Linux")); list.add(new Model("Windows7")); list.add(new Model("Suse")); list.add(new Model("Eclipse")); list.add(new Model("Ubuntu")); list.add(new Model("Solaris")); list.add(new Model("Android")); list.add(new Model("iPhone")); list.add(new Model("Java")); list.add(new Model(".Net")); list.add(new Model("PHP")); return list; }
Model.java
private String name; private boolean selected; public Model(String name) { this.name = name; } public String getName() { return name; } public boolean isSelected() { return selected; } public void setSelected(boolean selected) { this.selected = selected; }