检索android:entries的参数

时间:2013-02-17 10:36:48

标签: android

我是Spinner类的子类,我需要通过android:entries获取xml文件中指定的对象。我怎么能这样做?

<com.myapp.MySpinner
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:entries="@array/myarray"/>

所以我需要entries参数中指定的数组或者resourceid,所以我可以自己获取它们。

1 个答案:

答案 0 :(得分:1)

您需要覆盖Spinner的构造函数并从AttributeSet参数中检索条目。

public class MySpinner extends Spinner {
    public MySpinner(Context context, AttributeSet attrs) {
        super(context, attrs);

        if (attrs != null) {
            final int[] ids = {android.R.attr.entries};
            final TypedArray array = context.obtainStyledAttributes(attrs, ids);
            final int entriesId = array.getResourceId(0, 0);

            if (entriesId > 0) {
                final Resources resources = context.getResources();
                final String[] entries = resources.getStringArray(entriesId);

                if (entries != null) {
                    // do whatever you want here
                }
            }
        }
    }
}