Как установить положение в блесне? - PullRequest
19 голосов
/ 07 января 2012

Я читаю с помощью 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);

Тогда я читаю текст из другого файла. Этот текст всегда содержит одно слово. И это слово совпадает с одним из слов, которые я прочитал из первого файла (например, если первый файл, который я прочитал, содержал 5 слов, и одно из этих слов было "черным", второй файл, который я также прочитал содержит "черный"). И мне нужно сделать это конкретное слово (которое существует в обоих файлах) в качестве выбранного по умолчанию параметра в моем счетчике.

Например:

Первая строка содержит: красный, синий, желтый, черный, белый

Вторая строка содержит: желтый

Я делаю счетчик из первой строки, чтобы параметры в счетчике заполнялись в точности так: «красный, синий, желтый, черный, белый», а выбранная по умолчанию опция - красная (потому что это первая в моей первой строка), но мне нужно сделать желтый как выбранный вариант по умолчанию в этом случае, потому что вторая строка содержит «желтый». Слова в обеих строках всегда разные.

Кстати: я знаю, как сохранить положение в счетчике, но я не знаю, как установить положение в счетчике, если я сравниваю две строки, и одна из них содержит больше слов.

Ответы [ 3 ]

51 голосов
/ 15 апреля 2012

Вот решение, спасибо 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;
}
12 голосов
/ 07 января 2012

я думаю, что эта строка поможет вам

 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);
1 голос
/ 25 сентября 2014

Вам не нужно использовать адаптер ... вам просто нужно преобразовать массив строк в список
А затем используйте indexOf (Объектный объект) , чтобы получить индекс вашего вращения, используя выбранный цвет

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"));
...