Q:

ListView как добавить setOnCheckedChangeListener

При нажатии на элемент списка я меняю цвет. Но при прокрутке цвета теряются с нажатого элемента и прыгают на другой. Для ChackBox используется setOnCheckedChangeListener. Как-то его можно прикрутить к моей конструкции?
 @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.frg_list_all_words, null);

        fillDate();

        adapter = new MyAdapter(getActivity(), listWords);
        ListView lvMain = (ListView) view.findViewById(R.id.lvMain);
        lvMain.setAdapter(adapter);

        lvMain.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Word word = (Word) parent.getAdapter().getItem(position);
                view.setBackgroundColor(Color.parseColor("#818CD6"));
            }
        });

        return view;
    }

A:

Вам необходимо перенести эту логику в адаптер, а также сохранять в массив/список позиции выбранных элементов и в методе адаптера getView
сверять текущую позицию с сохраненными и собственно если совпадает ставить необходимый цвет, если нет - стандартный
2 вариант
попробовать написать свой Drawable с checked состояниями и установить его как бэкграунд вашему элементу списка, а также поставить ListView setChoiceMode(ListView.CHOICE_MODE_MULTIPLE) или setChoiceMode(ListView.CHOICE_MODE_SINGLE) смотря что Вам нужно. 

A:

view.setBackgroundColor(Color.parseColor("#818CD6"));

у вас устанавливает цвет текущего элемента списка, но при прокрутке ListView повторно использует те View которые вышли за границы экрана, наполняя их другими данными. Поэтому у вас происходит "перескакивание" цвета.
 Поэтому как сказали выше нужно задавать параметры view в момент наполнения view данными, например в процедуре адаптера:
@Override
    public View getView(int position, View convertView, ViewGroup parent) {     
        View v = super.getView(position, convertView, parent);
        if (isNeed) { 
            v.findViewById(resId)).setBackgroundColor(Color.parseColor("#818CD6"));
        } else {
            v.findViewById(resId)).setBackgroundColor(Color.Default);
        return v;
    }

