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

Ada*_*dam 20 android position file 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);
Run Code Online (Sandbox Code Playgroud)

然后我从另一个文件中读取文本.此文本始终包含一个单词.这个词与我从第一个文件中读取的一个单词相同(例如,如果我读到的第一个文件包含5个单词,其中一个单词是"黑色",那么我读到的第二个文件也是包含"黑色").我需要将这个特定的单词(存在于两个文件中)作为我的微调器中的默认选择选项.

例如:

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

第二个字符串包含:黄色

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

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

Ada*_*dam 55

这是解决方案,感谢sfratini的帮助.

使用:

spinner.setSelection(getIndex(spinner, myString));
Run Code Online (Sandbox Code Playgroud)

然后:

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;
}
Run Code Online (Sandbox Code Playgroud)

  • 您可以通过在找到时直接返回索引来优化它。为您保存一个变量加上一些迭代。但前提是这适合您的用例。(返回第一场比赛,而不是最后一场比赛,就像现在一样) (2认同)

Har*_*edi 13

我认为这条线会对你有所帮助

 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);
Run Code Online (Sandbox Code Playgroud)


小智 5

您不必使用 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"));
Run Code Online (Sandbox Code Playgroud)