Note that there are some explanatory texts on larger screens.

plurals
  1. POCheck boxes goes to checked automatically in Android
    text
    copied!<p>I have a List View that has several rows created by inflator, each row has two TextView and three check boxes. Everything work ok, but when I uses my finger to scroll down or up I noted that some check box goes to checked automatically. I don't know why it does this when using scroll. </p> <p>my code : </p> <pre><code> public class InteractiveArrayAdapter extends ArrayAdapter&lt;Student&gt; implements Filterable { final String NAMESPACE = "http://ws.sams.com"; String URL = "http://88.198.82.92:8080/sams1/services/InsertDataWS?WSDL"; // usint // localhost final String METHOD_NAME = "insertApsentData"; final String SOAP_ACTION = "http://ws.sams.com/insertApsentData"; List&lt;Integer&gt; checkBoxState = new ArrayList&lt;Integer&gt;(200); // List&lt;Integer&gt; checkBoxState2 = new ArrayList&lt;Integer&gt;(200); // List&lt;Integer&gt; checkBoxState3 = new ArrayList&lt;Integer&gt;(200); // Set&lt;Integer&gt; numbers = new HashSet&lt;Integer&gt;(); private final List&lt;Student&gt; StudentNamesList; // for the student names . private final List&lt;Student&gt; StudentIdsList; // for the student ids . private final Activity context; public InteractiveArrayAdapter(Activity context, List&lt;Student&gt; StudentNamesList, List&lt;Student&gt; StudentIdsList) { super(context, R.layout.activity_list, StudentNamesList); this.context = context; this.StudentNamesList = StudentNamesList; this.StudentIdsList = StudentIdsList; } protected Button sumbit; class ViewHolder { protected TextView StudentName; protected TextView StudentId; protected CheckBox checkbox; protected CheckBox checkbox2; protected CheckBox checkbox3; protected TableRow row; } public View getView(final int position, View convertView, ViewGroup parent) { View view = null; if (convertView == null) { LayoutInflater inflator = context.getLayoutInflater(); view = inflator.inflate(R.layout.rep, null); ViewHolder viewHolder = new ViewHolder(); viewHolder.StudentName = (TextView) view .findViewById(R.id.TextView07); viewHolder.StudentId = (TextView) view .findViewById(R.id.TextView08); viewHolder.checkbox = (CheckBox) view.findViewById(R.id.CheckBox05); viewHolder.checkbox2 = (CheckBox) view .findViewById(R.id.CheckBox02); viewHolder.checkbox3 = (CheckBox) view .findViewById(R.id.CheckBox01); viewHolder.row = (TableRow) view.findViewById(R.id.TableRow05); // final EditText searchEdit = (EditText) // view.findViewById(R.id.searchlable); Typeface font = Typeface.createFromAsset(context.getAssets(), "extrafine.ttf"); Typeface fontar = Typeface.createFromAsset(context.getAssets(), "extrafinear.ttf"); viewHolder.StudentName.setTypeface(fontar); viewHolder.StudentId.setTypeface(font); sumbit = (Button) context.findViewById(R.id.sumbitbtn); view.setTag(viewHolder); viewHolder.row.setTag(StudentNamesList.get(position)); // here note viewHolder.checkbox.setTag(StudentNamesList.get(position)); viewHolder.checkbox2.setTag(StudentNamesList.get(position)); viewHolder.checkbox3.setTag(StudentNamesList.get(position)); } else { view = convertView; ((ViewHolder) view.getTag()).checkbox.setTag(StudentNamesList .get(position)); ((ViewHolder) view.getTag()).checkbox2.setTag(StudentNamesList .get(position)); ((ViewHolder) view.getTag()).checkbox3.setTag(StudentNamesList .get(position)); ((ViewHolder) view.getTag()).row.setTag(StudentNamesList .get(position)); } final ViewHolder holder = (ViewHolder) view.getTag(); holder.StudentName.setText(StudentNamesList.get(position).getName()); holder.StudentId.setText(StudentIdsList.get(position).getName()); holder.checkbox.setChecked(StudentNamesList.get(position).isSelected()); holder.checkbox2 .setChecked(StudentNamesList.get(position).isSelected()); holder.checkbox3 .setChecked(StudentNamesList.get(position).isSelected()); holder.checkbox .setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) { holder.checkbox2.setChecked(false); holder.checkbox3.setChecked(false); holder.row.setBackgroundResource(R.drawable.green); } else { } ((Student) holder.checkbox.getTag()).setSelected(true); if (((CheckBox) holder.checkbox).isChecked()) { ViewGroup row1 = (ViewGroup) holder.checkbox .getParent(); View view1 = ((ViewGroup) row1).getChildAt(4); if (view1 instanceof TextView) { holder.StudentName = (TextView) view1; checkBoxState.add(Integer .parseInt(holder.StudentName.getText() .toString())); } } } }); holder.checkbox3 .setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) { holder.row.setBackgroundResource(R.drawable.red); holder.checkbox2.setChecked(false); holder.checkbox.setChecked(false); } else { } ((Student) holder.checkbox3.getTag()).setSelected(true); // Toast.makeText(context, // holder.text.getText().toString() , // Toast.LENGTH_SHORT).show(); if (((CheckBox) holder.checkbox3).isChecked()) { ViewGroup row1 = (ViewGroup) holder.checkbox3 .getParent(); // for (int itemPos = 1; itemPos &lt; ((ViewGroup) // row1).getChildCount(); itemPos++) { View view1 = ((ViewGroup) row1).getChildAt(4); if (view1 instanceof TextView) { holder.StudentName = (TextView) view1; // numbers.add(Integer.parseInt(holder.StudentName.getText().toString()));} checkBoxState.add(Integer .parseInt(holder.StudentName.getText() .toString())); } // else{ // checkBoxState.add(1);} } } }); holder.checkbox2 .setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) { holder.row.setBackgroundResource(R.drawable.blue); holder.checkbox.setChecked(false); holder.checkbox3.setChecked(false); } else { } ((Student) holder.checkbox2.getTag()).setSelected(true); // Toast.makeText(context, // holder.text.getText().toString() , // Toast.LENGTH_SHORT).show(); if (((CheckBox) holder.checkbox2).isChecked()) { ViewGroup row1 = (ViewGroup) holder.checkbox2 .getParent(); // for (int itemPos = 1; itemPos &lt; ((ViewGroup) // row1).getChildCount(); itemPos++) { View view1 = ((ViewGroup) row1).getChildAt(4); if (view1 instanceof TextView) { holder.StudentName = (TextView) view1; // numbers.add(Integer.parseInt(holder.StudentName.getText().toString()));} checkBoxState.add(Integer .parseInt(holder.StudentName.getText() .toString())); } // else{ // checkBoxState.add(1);} } } }); sumbit.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { for (int i = 0; i &lt; checkBoxState.size(); i++) { Toast.makeText(context, checkBoxState.get(i).toString(), Toast.LENGTH_SHORT).show(); // For webservice propose try { SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); PropertyInfo pi = new PropertyInfo(); pi.setName("SID"); pi.setValue(Integer.parseInt(checkBoxState.get(i) .toString())); pi.setType(Integer.class); SharedPreferences mPrefs = context .getSharedPreferences("ITeacher", 0); // int str1 = mPrefs.getInt("1",0); int str1 = 1; PropertyInfo pi2 = new PropertyInfo(); pi2.setName("TID"); pi2.setValue(str1); pi2.setType(Integer.class); PropertyInfo pi3 = new PropertyInfo(); pi3.setName("class_id"); pi3.setValue(str1); pi3.setType(Integer.class); request.addProperty(pi); request.addProperty(pi2); request.addProperty(pi3); final SoapSerializationEnvelope envelope = new SoapSerializationEnvelope( SoapEnvelope.VER11); envelope.setOutputSoapObject(request); final HttpTransportSE androidHttpTransport = new HttpTransportSE( URL); androidHttpTransport.call(SOAP_ACTION, envelope); } catch (Exception e) { } } } }); return view; } </code></pre> <p>}</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload