好吧,我找到了解决方案。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 将被正确选中/取消选中。