I check the list box for each list from the Iten list. The problem I get is when I click on any one checkbox, and when I look at some other checkboxes that don't click, they also click randomly. I went through many references to SO, but this did not solve my problem.
public class CustomListViewAdapter extends ArrayAdapter<Client> { ViewHolder holder = null; private LayoutInflater inflator = null; private ArrayList<Client> orderList = null; ArrayList<View> allViews; public CustomListViewAdapter(Context context, int resource, List<Client> objects) { super(context, resource, objects); orderList = (ArrayList<Client>) objects; inflator = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); allViews = new ArrayList<View>(); } @Override public View getView(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) { CheckBox cchk = (CheckBox)view; ViewHolder checkPosition = (ViewHolder) view.getTag(); if(cchk.isChecked()) { checkPosition.spinnerAddorder.setVisibility(View.VISIBLE); } else { checkPosition.spinnerAddorder.setVisibility(View.INVISIBLE); } } }); List<String> list = new ArrayList<String>(); list.add("Select Quantity"); list.add("1"); list.add("2"); list.add("3"); ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this.getContext(),R.layout.spinner_add_order_style, list); dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_item); holder.spinnerAddorder.setAdapter(dataAdapter); if(holder.checkAddorder.isChecked()) { 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; } }
my xml file
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:orientation="horizontal" android:paddingLeft="5dp" android:paddingRight="5dp" android:weightSum="2" > <TextView android:id="@+id/txtViewAddOrder" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1.2" android:text="TextView" android:textSize="25sp" /> <Spinner android:id="@+id/spinnerAddOrder" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight=".8" android:background="@drawable/dropdown" /> <CheckBox android:id="@+id/checkAddOrder" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="20dp" /> </LinearLayout>
source share