0

我有一个字符串类型的数组列表,它分配给微调器。当我使用以下代码设置微调器的选择时,它返回 -1 作为位置,尽管列表中存在字符串。

      int spinnerPosition = myAdap.getPosition(myString);
       ////here it returns -1
       //set the default according to value
       spinner.setSelection(spinnerPosition);

它为某些适配器返回正确的位置,但不为其他适配器返回正确的位置。什么可能是错的?我在“myString”变量中传递的字符串是 100% 正确的,并且存在于适配器列表中。

4

1 回答 1

0

我不是积极的,所以如果这是错误的,我很抱歉。现在没有要查看的源代码。

但我认为 getPosition() 方法不执行 .equals() 比较,因此您不能只传入等效字符串。所以不要做

myString = "asdf"; //myString is getting assigned a reference to a brand new string
spinnerPosition = adapter.getPosition(myString);

因为 mySpring 没有指向与数组中的字符串相同的对象,即使myString.equals(originalString)可能返回 true;

这应该有效:

//assign the reference to point at the exact same object that is in the ArrayList
myString = originalString; 
spinnerPosition = adapter.getPosition(myString);
于 2013-08-23T17:34:41.997 回答