私はクラスを持っています、それは拡張LinearLayout
します、そこにはとがButtons
ありSpinner
ます。
このオブジェクトは、レイアウトXMLファイルを介して含まれます。
<com.ics.spinn.ComboBox android:id="@+id/myautocombo"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:completionThreshold="1"
android:entries="@array/suppliers" />
/>
配列サプライヤはstrings.xmlで定義されています。
このコンポーネントがcom.ics.spinn.ComboBoxではなくSpinner
、Androidがandroid:entries
Spinnerアダプターに「」を自動入力する場合。
コンポーネントcom.ics.spinn.ComboBoxを同じように動作させたい:xmlファイルを介して定義された配列にアクセスできるようにし、コンポーネント内のスピナーに次の方法で提供できるようにします。
ArrayAdapter<String> a = new ArrayAdapter<String>(this.getContext(),android.R.layout.simple_spinner_dropdown_item, ARRAYINSIDEMYXML);
s.setAdapter(a);
これで、strings.xmlで定義された配列に直接アクセスできましたgetResources().getStringArray(R.array.suppliers)
が、android:entries ...を介して提供されるため、コードは「suppliers」という名前を認識しないはずです。
これ+JoãoMeloソリューションのxmlのエントリWORK:
public ComboBox(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray b = context.obtainStyledAttributes(attrs,
R.styleable.ComboBox, 0, 0);
CharSequence[] entries = b.getTextArray(R.styleable.ComboBox_myEntries);
if (entries != null) {
ArrayAdapter<CharSequence> adapter =
new ArrayAdapter<CharSequence>(context,
android.R.layout.simple_spinner_item, entries);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
s.setAdapter(adapter);
}
}