-4

私はArrayList.Indexof("Value")自分のアプリケーションの1つで使用しています。ArrayList400以上の値が含まれており、このリストを使用してスピナーに表示しています。Indexofそのアイテムが必要な特定の位置にスピナーを移動したい。Spinner を使用していますsetSelectionが、ここでArrayList.Indexof("Value")は -1 が返されます...なぜですか? 私を助けてください..

4

3 に答える 3

6

javadocを参照してください。

そのようなインデックスがない場合は -1 を返します

于 2012-06-19T09:26:37.127 に答える
1

-1 が返されるという事実は、インデックス「値」が ArrayList に存在しないことを示しています。比較するために、equals()使用されます。失敗する可能性がある 2 つのポイント:

  • 大文字と小文字を含むスペル ("value".equals("Value") -> false)
  • ArrayList には文字列は含まれていませんが、それ以外のものが含まれているため、別の実装を使用する可能性がありますString#equals(String)

より多くの情報を提供できるようにしたい場合は、いくつかのコードが必要です...

于 2012-06-19T09:32:09.757 に答える
0

SpinnerのsetSelectionを使用していますが、ここではArrayList.Indexof( "Value")が-1を返します。

これは、文字列が実際にはリストにないことを示しています。限目。

では、実際に何が起こっているのでしょうか。

@brimboriumは、いくつかの可能性を特定しました。

  • リスト内の値とテストしている値は、大文字と小文字が異なる場合があります
  • リスト内の値またはテストしている値が文字列ではありません

そして他のいくつかは:

  • いずれかの値に、表示されない先頭または末尾の空白があります
  • 特定のUnicodeコードポイント(文字)は、レンダリングすると同じように見えますが、異なっており、異なるものとして比較されます

または...コードが値を追加しなかったか、値を削除しました。

于 2012-06-19T10:50:09.923 に答える