Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>This is happening because of view recycling. What you need to do is maintain an array of say booleans and every time a checkbox is checked toggle the corresponding boolean. Then in your getview check the corresponding boolean array position and set the state of the check box.</p> <p>Along these lines: I have modified it so it displays correctly. Have not checked what the rest of your code is upto. ^_^</p> <pre><code>public class CustomListViewAdapter extends ArrayAdapter&lt;Client&gt; { ViewHolder holder = null; private LayoutInflater inflator = null; private ArrayList&lt;Client&gt; orderList = null; ArrayList&lt;View&gt; allViews; boolean[] checkedStates; //********** NEW ******** public CustomListViewAdapter(Context context, int resource, List&lt;Client&gt; objects) { super(context, resource, objects); orderList = (ArrayList&lt;Client&gt;) objects; inflator = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); allViews = new ArrayList&lt;View&gt;(); checkedStates = new boolean[objects.size()]; //********** NEW ******** } @Override //********** NEW ******** position argument is now final public View getView(final int position, View convertView, ViewGroup parent) { if(convertView == null) { convertView = inflator.inflate(R.layout.listview_add_order, null); holder = new ViewHolder(); convertView.setTag(holder); holder.txtViewName = (TextView) convertView.findViewById(R.id.txtViewAddOrder); holder.spinnerAddorder = (Spinner) convertView.findViewById(R.id.spinnerAddOrder); holder.checkAddorder = (CheckBox) convertView.findViewById(R.id.checkAddOrder); holder.checkAddorder.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); holder.checkAddorder.setTag(holder); } allViews.add(position, holder.spinnerAddorder); holder.checkAddorder.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { checkedStates[position] = !checkedStates[position]; //********** NEW ******** } }); holder.chechAddorder.setChecked(checkedStates[position]); //********** NEW ******** List&lt;String&gt; list = new ArrayList&lt;String&gt;(); list.add("Select Quantity"); list.add("1"); list.add("2"); list.add("3"); ArrayAdapter&lt;String&gt; dataAdapter = new ArrayAdapter&lt;String&gt;(this.getContext(),R.layout.spinner_add_order_style, list); dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_item); holder.spinnerAddorder.setAdapter(dataAdapter); if(checkedStates[position]) { //********** NEWEST ******** assuming true is checked and false is unchecked ViewHolder checkPosition = (ViewHolder) holder.checkAddorder.getTag(); checkPosition.spinnerAddorder.setVisibility(View.VISIBLE); } else { ViewHolder checkPosition = (ViewHolder) holder.checkAddorder.getTag(); checkPosition.spinnerAddorder.setVisibility(View.INVISIBLE); } Client order = orderList.get(position); holder.txtViewName.setText(order.getFirstName()); return convertView; } private static class ViewHolder { public TextView txtViewName = null; public Spinner spinnerAddorder = null; public CheckBox checkAddorder = null; } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

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