Android: Как сделать AlertDialog с двумя текстовыми строками и RadioButton (один выбор)? - PullRequest
2 голосов
/ 18 марта 2011

Как создать диалог списка со строками, подобными этой:

|-----------------------------|
| FIRST LINE OF TEXT      (o) | <- this is a "RadioButton"
| second line of text         |
|-----------------------------|

Я знаю, что должен использовать пользовательский адаптер, передавая макет строки с этими представлениями (на самом деле, я сделал это). Но RadioButton не выбирается, когда я нажимаю на строку.

Возможно ли, чтобы диалог сам управлял радиокнопками?

1 Ответ

2 голосов
/ 18 марта 2011

Я нашел решения здесь и здесь .

По сути, мы должны создать макет «Checkable», потому что корневой элемент представления должен реализовывать интерфейс Checkable.

Поэтому я создаю оболочку RelativeLayout, которая сканирует RadioButton и вуаля, волшебство сделано.

public class CheckableLayout extends RelativeLayout implements Checkable
{
    private RadioButton _checkbox;

    public CheckableLayout(Context context, AttributeSet attrs)
    {
        super(context, attrs);
    }

    @Override
    protected void onFinishInflate()
    {
        super.onFinishInflate();
        // find checkable view
        int childCount = getChildCount();
        for (int i = 0; i < childCount; ++i)
        {
            View v = getChildAt(i);
            if (v instanceof RadioButton)
            {
                _checkbox = (RadioButton) v;
            }
        }
    }

    public boolean isChecked()
    {
        return _checkbox != null ? _checkbox.isChecked() : false;
    }

    public void setChecked(boolean checked)
    {
        if (_checkbox != null)
        {
            _checkbox.setChecked(checked);
        }
    }

    public void toggle()
    {
        if (_checkbox != null)
        {
            _checkbox.toggle();
        }
    }

}

Вы можете сделать это с помощью флажка или что вам нужно.

...