Адаптер Android Spinner setDropDownViewResource настраиваемый макет с радиокнопкой

Я использую Spinner в диалоговом режиме. Я установил SimpleCursorAdapter для Spinner с помощью setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); Это прекрасно работает.

Теперь вместо simple_spinner_dropdown_item я пытаюсь передать свой собственный макет, он тоже работает хорошо.

Но есть но... у него нет переключателя, который есть в оригинальном simple_spinner_dropdown_item. Можно ли добавить переключатель внутри моего пользовательского spinner_dropdown_item, который будет выбран при отображении диалогового окна счетчика?


person Ben    schedule 02.10.2012    source источник


Ответы (2)


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

у вас есть еще один вариант, чтобы получить ваше требование. это Alert dialog

просто взгляните на это диалоговое окно оповещения с переключателями в Android и как создать пользовательский диалог и диалоговое окно раскрывающегося типа и диалоговое окно в Android

person Ram kiran    schedule 03.10.2012

Ну я нашел решение. ListView (то, что находится внутри диалогового окна счетчиков) проверит, является ли ваше представление Checkable, и вызовет setChecked. Поскольку android.R.layout.simple_spinner_dropdown_item можно проверить, он работает. Итак, для моего пользовательского элемента списка я создал LinearLayout, который реализует Checkable

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 будет правильно проверен/снят.

person Ben    schedule 07.10.2012