Android微调器适配器setDropDownViewResource自定义布局与radiobutton

时间:2012-10-02 18:04:26

标签: android android-widget android-ui

我在对话模式下使用Spinner。 我使用setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)为Spinner设置SimpleCursorAdapter; 这很好。

现在我没有使用simple_spinner_dropdown_item来尝试传递我的自定义布局,它确实也能正常工作。

但是有一个但是......它没有原始simple_spinner_dropdown_item所做的单选按钮。 是否可以在我的自定义spinner_dropdown_item中添加单选按钮,该按钮将在显示微调器对话框时选择?

2 个答案:

答案 0 :(得分:0)

是的,但是你必须为spinner定义另一个类。请看this

您还有一个选项可以满足您的要求。那是Alert dialog

只需查看此Alert Dialog Window with radio buttons in AndroidHow to create custom and drop down type dialog and Dialog in android

即可

答案 1 :(得分:0)

我找到了解决方案。 ListView(旋转器对话框内部的内容)将检查您的View是否可检查并调用setChecked。由于android.R.layout.simple_spinner_dropdown_item是可检查的,因此可行。 因此,对于我的自定义List项,我创建了实现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将被正确选中/取消选中。