Explain humanly why when scrolling ListView checkboxes lose their positions? How can this be eliminated if I blocked CheckBox and I do not need a listener?
Adapter class ...
public class InteractiveArrayAdapter extends ArrayAdapter<Model> { private final List<Model> list; private final Activity context; public InteractiveArrayAdapter(Activity context, ArrayList<Model> list) { super(context, R.layout.row, list); this.context = context; this.list = list; } static class ViewHolder { protected TextView text, summ; protected CheckBox checkbox; } @Override public View getView(int position, View convertView, ViewGroup parent) { View view = null; if (convertView == null) { LayoutInflater inflator = context.getLayoutInflater(); view = inflator.inflate(R.layout.row, null); final ViewHolder viewHolder = new ViewHolder(); viewHolder.text = (TextView) view.findViewById(R.id.ColMemberID); viewHolder.summ = (TextView) view.findViewById(R.id.ColName); viewHolder.checkbox = (CheckBox) view.findViewById(R.id.chb_products); viewHolder.checkbox.setFocusable(false); viewHolder.checkbox.setClickable(false); view.setTag(viewHolder); viewHolder.checkbox.setTag(list.get(position)); } else { view = convertView; ((ViewHolder) view.getTag()).checkbox.setTag(list.get(position)); } ViewHolder holder = (ViewHolder) view.getTag(); Model item = list.get(position); holder.text.setText(item.getName()); holder.summ.setText(item.getBeta()); holder.checkbox.setChecked(item.isSelected()); return view; } } Class model ...
public class Model { private String name, beta; private boolean selected; public Model(String name, String beta, Boolean selected) { this.name = name; this.beta = beta; this.selected = selected; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getBeta() { return beta; } public void setBeta(String beta) { this.beta = beta; } public boolean isSelected() { return selected; } public void setSelected(boolean selected) { this.selected = selected; } } Code of the listener of clicking on items ListView ...
lv_products.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { CheckBox box = (CheckBox)view.findViewById(R.id.chb_products); if(box.isChecked()) { box.setChecked(false); mSqLiteDatabase.execSQL("UPDATE products SET complete = '0' WHERE _id=" + position); } else { box.setChecked(true); mSqLiteDatabase.execSQL("UPDATE products SET complete = '1' WHERE _id=" + position); } } }); What do i do?
item.isSelected()does not change anywhere - Vladyslav Matviienko