How can I make my ArrayAdapter follow the ViewHolder pattern?

The ViewHolder is basically a static class instance that you associate with a view when it’s created, caching the child views you’re looking up at runtime. If the view already exists, retrieve the holder instance and use its fields instead of calling findViewById. In your case: @Override public View getView(int position, View convertView, ViewGroup parent) … Read more

ListView: setItemChecked only works with standard ArrayAdapter – does NOT work when using customized ArrayAdapter?

Your row layout needs to be Checkable for setItemChecked() to work, in which case Android will manage calling setChecked() on your Checkable as the user clicks on the row. You would not need to be setting up your own OnCheckedChangeListener. For more, see: ListView with CHOICE_MODE_MULTIPLE using CheckedText in a custom view Multiple choice list … Read more