Well I have found solution. ListView (what is inside of the spinners dialog) will check if your View is Checkable and call setChecked. Since android.R.layout.simple_spinner_dropdown_item is checkable it works.
So for my custom List item i have created LinearLayout that implements Checkable
public class CheckableLinearLayout extends LinearLayout implements Checkable
{
private boolean _isChecked = false;
public CheckableLinearLayout(Context context)
    {
    super(context);
    }
public CheckableLinearLayout(Context context, AttributeSet attrs)
    {
    super(context, attrs);
    }
@Override
public void setChecked(boolean checked)
    {
    _isChecked = checked;
    for (int i = 0; i < getChildCount(); i++)
        {
        View child = getChildAt(i);
        if (child instanceof Checkable)
            {
            ((Checkable) child).setChecked(_isChecked);
            }
        }
    }
@Override
public boolean isChecked()
    {
    return _isChecked;
    }
@Override
public void toggle()
    {
    _isChecked = !_isChecked;
    }
}
So ListView calls setChecked and I propagate that down to children views and my CheckBox / RadioButton will get checked / unchecked correctly.