さて、私は解決策を見つけました。ListView (スピナー ダイアログの内部) は、View が Checkable であるかどうかを確認し、setChecked を呼び出します。android.R.layout.simple_spinner_dropdown_item はチェック可能であるため、機能します。したがって、私のカスタム リスト アイテムでは、Checkable を実装する LinearLayout を作成しました。
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;
}
}
したがって、ListView は setChecked を呼び出し、それを子ビューに伝達すると、CheckBox / RadioButton が正しくチェック/チェック解除されます。