web-dev-qa-db-ja.com

スピナーで位置を設定する方法は?

システムファイルからBufferedReaderテキストで読み取りました。このテキストには、たとえば5ワードが含まれますが、別の場合には、より少ないまたはより多くのワードを含めることができます。次に、このテキスト(言及した単語)を単一の文字列に入れ、その文字列を共有設定に保存しました。次に、この文字列からスピナーを作成しました。コードは次のとおりです。

Spinner spinner = new Spinner(this);
    ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, Android.R.layout.simple_spinner_dropdown_item, yourString.split(" "));
    spinner.setAdapter(spinnerArrayAdapter);

次に、別のファイルからテキストを読み取ります。このテキストには常に1つのWordが含まれます。そして、このWordは最初のファイルから読んだ単語の1つと同じです(たとえば、最初に読んだファイルに5つの単語が含まれていて、これらの単語の1つが「黒」だった場合、2番目に読んだファイルも「黒」を含む)。 そして、この特定のWord(両方のファイルに存在する)をスピナーのデフォルトの選択オプションとして作成する必要があります。

例:

最初の文字列には、赤、青、黄、黒、白が含まれます

2番目の文字列の内容:黄色

私は最初の文字列からスピナーを作成し、スピナーのオプションは「赤、青、黄、黒、白」のように正確に入力され、デフォルトで選択されているオプションは赤です(最初の文字列の最初のオプションであるため)ただし、この場合、デフォルトの選択オプションとして黄色を選択する必要があります。2番目の文字列には「黄色」が含まれているためです。 両方の文字列の単語は常に異なります。

ところで:スピナーで位置を保存する方法は知っていますが、2つの文字列を比較し、そのうちの1つに単語が含まれている場合、スピナーで位置を設定する方法はわかりません。

20
Adam

ここに解決策があります。助けてくれたsfratiniに感謝します。

使用する:

spinner.setSelection(getIndex(spinner, myString));

次に:

private int getIndex(Spinner spinner, String myString){

        int index = 0;

        for (int i=0;i<spinner.getCount();i++){
            if (spinner.getItemAtPosition(i).equals(myString)){
                index = i;
            }
        }
        return index;
}
52
Adam

私はこの行があなたを助けると思う

 String[] a= new String[10];
 a[0]="abc";
 a[1]="xyz";
 a[2]="pqr";
 .....
 .....
 spin = (Spinner) findViewById(R.id.TimeSpinner);
 ArrayAdapter<String> adapter = new ArrayAdapter<String>(TimeSpin.this, Android.R.layout.simple_spinner_item, a);  
   adapter.setDropDownViewResource(Android.R.layout.simple_spinner_dropdown_item)‌​;  
   spin.setAdapter(adapter); 
   spin.setSelection(0);
13
Harsh Trivedi

アダプタを使用する必要はありません...文字列配列をリストに変換するだけです
そしてindexOf(Object object)を使用して、選択した色を使用してスピンのインデックスを取得します

String [] strings = yourString.split(" ");
List<String> strList = new ArrayList<String>(Arrays.asList(strings));
//Or you can load array from xml...
//List<String> strList2 = Arrays.asList(getResources().getStringArray(R.array.array_color));
spinner.setSelection(strList.indexOf("colorvalue"));
2
MohamedZaatari