So first of all don't rely on the view as data.
I'll explain in your code 
if (((CheckBox) v).isChecked())
You relying on view's isChecked method.
This may cause a bug because of android list recycling mechanism.
You can read about it in the link below
How ListView's recycling mechanism works
TL;DR views are being recycled so when you scroll your list.
So for example the user checked item number 3 and then scrolled the list down item number 13 for example may also be shown as checked even tho it isn't .
So when onClick triggers we need to save the checked state in some list
After the theoretical intro i'll show it in code.
//Here you'll need to create some boolean array or list to store
//checked not checked positions lets call it checked
boolean[] checkedArr = new boolean[catalogDatabases.size()];
// catalogDatabases.size represents your data set size
// note that all items will be false initially
    @Override
    public void onBindViewHolder(@NonNull final MyViewHolder holder, final int position) {
        /**
         * Other views binding.......
         */
        holder.itemCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
                checkedArr[position] = isChecked;
                sumAllCheckedAndNotify();
            }
        }
        );
    }
(I decided to do the calculation on every check it more straight forward from making an update on the event)
    private void sumAllCheckedAndNotify() {
        double sum = 0;
        for (int i = 0; i < checkedArr.length; i++) {
            if(checkedArr[i]) {
                sum += Double.parseDouble(catalogDatabases.get(i).getPriceItem());
            }
        }
        // pudate the listener
        listener.respond(sum, selectedCount);
    }