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 に答える