Android:配列からスピナーをプログラムで作成する


198

私はすべてAndroidを使い始めたばかりで、スピナーをプログラムで作成し、配列からデータを供給しようとしていますが、Eclipseで処理できないという警告が表示されます。

ここに私が得たものがあります:

このArrayListは、スピナーにある必要がある要素を保持します(後でファイルから入力されます):

ArrayList<String> spinnerArray = new ArrayList<String>();

これは、スピナーを作成する必要があるサイトで見つけたコードです。

Spinner spinner = new Spinner(this);
ArrayAdapter spinnerArrayAdapter = new ArrayAdapter(this,
                android.R.layout.simple_spinner_dropdown_item,
                spinnerArray);
spinner.setAdapter(spinnerArrayAdapter);

2行目(ArrayAdapter ...)は、Eclipseで次の警告を表示します。 "ArrayAdapter is a raw type... References to generic type ArrayAdapter<T> should be parameterized"ます。

これは単なる警告であり、アプリは問題なく実行されているようですが、何が問題かを理解して修正したいと思います。任意のヒントをいただければ幸いです。

挨拶、Select0r

回答:


388

ArrayAdapter<String> うまくいくはずです。

つまり:

Spinner spinner = new Spinner(this);
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>
            (this, android.R.layout.simple_spinner_item,
           spinnerArray); //selected item will look like a spinner set from XML
spinnerArrayAdapter.setDropDownViewResource(android.R.layout
                                                     .simple_spinner_dropdown_item);
spinner.setAdapter(spinnerArrayAdapter); 

私はそれを試しましたが、エラーはわずかに変化します:) Type safety: The expression of type ArrayAdapter needs unchecked conversion to conform to ArrayAdapter<String>
Select0r

2
あなたがあなたの投稿を編集している間、すぐにコメントしました:)私は2番目を逃しました<String>、あなたのコードは今、うまくいきます、たくさんありがとう!
Select0r

23
使用ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(activity, R.layout.simple_spinner_item); spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);または他のラジオボタンは、一部のデバイス上のスピナーに表示される場合があります。
Ken

あなたのanswereは参考になりましたし、第一スピナのみ後、第2作業する必要がある場合、あなたは私が2スピナーを使用していますが、私がしたい場合ことを私に教えてくださいすることができます

1
また、androidドキュメントでこのメソッドについて説明しています:developer.android.com/guide/topics/ui/controls/spinner.html
WOUNDEDStevenJones

109

配列と同じように

// Array of choices
String colors[] = {"Red","Blue","White","Yellow","Black", "Green","Purple","Orange","Grey"};

// Selection of the spinner
Spinner spinner = (Spinner) findViewById(R.id.myspinner);

// Application of the Array to the Spinner
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this,   android.R.layout.simple_spinner_item, colors);
spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // The drop down view
spinner.setAdapter(spinnerArrayAdapter);

私の配列は(静的ではなく)ループから来ているため、ArrayListを使用してこれを行いました。
Jacksonkr

61

これは、プロジェクトのリソースから読み込まれた名前の文字列配列で私にとってはうまくshoesいきました:

Spinner              spinnerCountShoes = (Spinner)findViewById(R.id.spinner_countshoes);
ArrayAdapter<String> spinnerCountShoesArrayAdapter = new ArrayAdapter<String>(
                     this,
                     android.R.layout.simple_spinner_dropdown_item, 
                     getResources().getStringArray(R.array.shoes));
spinnerCountShoes.setAdapter(spinnerCountShoesArrayAdapter);

これは、次の名前の文字列配列をres/values/arrays.xml持つ私のリソースファイル()です。shoes

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="shoes">
        <item>0</item>
        <item>5</item>
        <item>10</item>
        <item>100</item>
        <item>1000</item>
        <item>10000</item>
    </string-array>
</resources>

この方法を使用すると、(必要に応じて)多言語にするのが簡単になります。


36

これは実際に私のために働いた

    Spinner spinner = new Spinner(this);
    ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(
            this, android.R.layout.simple_spinner_item, spinnerArray);
    spinnerArrayAdapter.setDropDownViewResource( android.R.layout.simple_spinner_dropdown_item );

    spinner = (Spinner) findViewById( R.id.spinner );
    spinner.setAdapter(spinnerArrayAdapter);

6
これSpinner spinner = new Spinner(this);を行うときの目的は何ですかspinner = (Spinner) findViewById( R.id.spinner );
mr5 '10 / 10/26

エラーの理由:ArrayAdapter(<anonymous OnItemSelectedListener>、int、DetailData)コンストラクタArrayAdapter.ArrayAdapter(Context、int、int、List <String>)に該当するコンストラクタが見つかりません?
user151968 2016年

6

私にとってこの作品:-

String[] array = {"A", "B", "C"};
String abc = "";


Spinner spinner = new Spinner(getContext());
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(getContext(), android.R.layout.simple_spinner_item, array); //selected item will look like a spinner set from XML
spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(spinnerArrayAdapter);

フラグメントを使用しています。


3

Kotlin言語では、次のように行うことができます。

val values = arrayOf(
    "cat",
    "dog",
    "chicken"
)

ArrayAdapter(
    this,
    android.R.layout.simple_spinner_item,
    values
).also {
    it.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
    spinner.adapter = it
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.