Android spinner适配器setDropDownViewResource带有radiobutton的自定义布局

Android spinner适配器setDropDownViewResource带有radiobutton的自定义布局,android,android-widget,android-ui,Android,Android Widget,Android Ui,我在对话框模式下使用微调器。 我使用setDropDownViewResource(android.R.layout.simple\u Spinner\u dropdown\u项)为微调器设置SimpleCursorAdapter; 那很好 现在,我正在尝试传递我的自定义布局,而不是简单的微调器下拉项,它也可以很好地工作 但是有一个但是。。。它没有原始简单微调器下拉列表项所具有的单选按钮。 是否可以在显示微调器对话框时选择的自定义微调器下拉列表项目中添加单选按钮 是的,这是可能的,但是您必须为s

我在对话框模式下使用微调器。 我使用setDropDownViewResource(android.R.layout.simple\u Spinner\u dropdown\u项)为微调器设置SimpleCursorAdapter; 那很好

现在,我正在尝试传递我的自定义布局,而不是简单的微调器下拉项,它也可以很好地工作

但是有一个但是。。。它没有原始简单微调器下拉列表项所具有的单选按钮。
是否可以在显示微调器对话框时选择的自定义微调器下拉列表项目中添加单选按钮

是的,这是可能的,但是您必须为spinner定义另一个类

你还有一个选择来满足你的需求。即
警报对话框


只要看看这个,我就找到了解决办法。ListView(微调器对话框中的内容)将检查视图是否可检查,并调用setChecked。因为android.R.layout.simple\u微调器\u下拉菜单\u项是可检查的,所以它可以工作。 因此,对于我的自定义列表项,我创建了实现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;
    }

}
公共类CheckableLinearLayout扩展了LinearLayout实现了Checkable
{
私有布尔值_isChecked=false;
公共CheckableLinearLayout(上下文)
{
超级(上下文);
}
公共CheckableLinearLayout(上下文、属性集属性)
{
超级(上下文,attrs);
}
@凌驾
公共void setChecked(布尔值已选中)
{
_isChecked=已检查;
对于(int i=0;i
所以ListView调用setChecked,我将其传播到子视图,我的复选框/单选按钮将被正确选中/取消选中