簡體   English   中英

Android Spinner適配器setDropDownViewResource具有單選按鈕的自定義布局

[英]Android spinner adapter setDropDownViewResource custom layout with radiobutton

我在對話模式下使用Spinner。 我使用setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)為Spinner設置了SimpleCursorAdapter; 很好

現在,我嘗試通過自定義布局,而不是simple_spinner_dropdown_item,它的效果也很好。

但是有一個但是...它沒有原始的simple_spinner_dropdown_item擁有的單選按鈕。 是否可以在顯示微調器對話框時選擇的自定義spinner_dropdown_item中添加單選按鈕?

它是可能的,但你必須定義一個又一個類spinner.Just看看這個

您還有一個選擇可以滿足您的要求。 那是Alert dialog

只需在Android中通過單選按鈕簽出此Alert Dialog Window,以及如何 在Android 中創建自定義和下拉類型對話框和Dialog

好吧,我找到了解決方案。 ListView(微調器對話框中的內容)將檢查您的View是否可檢查並調用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將被正確選中/取消選中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM