如何在微调器中设置位置?

时间:2012-01-07 11:36:41

标签: android file position set spinner

我从系统文件中读取BufferedReader文本;例如,该文本包含5个单词,但在另一个案例中,它可以包含更少或更多的单词。然后我将此文本(提到的单词)放入SINGLE字符串并将该字符串保存到共享首选项。然后我用这个字符串做了一个微调器。 代码如下:

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个单词,其中一个单词是“黑色”,那么我读到的第二个文件也是包含“黑色”)。 我需要将这个特定单词(存在于两个文件中)作为我的微调器中的默认选项。

例如:

第一个字符串包含:红色,蓝色,黄色,黑色,白色

第二个字符串包含:黄色

我从第一个字符串创建一个微调器,所以spinner中的选项填充如下:“红色,蓝色,黄色,黑色,白色”,默认选择的选项是红色(因为它恰好是我第一个中的第一个在这种情况下,我需要将黄色作为默认选择选项,因为第二个字符串包含“黄色”。 两个字符串中的字总是不同。

BTW:我知道如何在微调器中保存位置,但如果我比较两个字符串并且其中一个包含更多单词,我不知道如何在微调器中设置位置。

3 个答案:

答案 0 :(得分:50)

这是解决方案,感谢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;
}

答案 1 :(得分:11)

我认为这一行会对你有帮助

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

答案 2 :(得分:1)

您不必使用Adapter ...您只需要将String数组转换为List
然后使用 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"));