2011-02-07 13 views
2

こんにちは、私はsqliteのデータと1つのFloat値を取得し、ArrayListの中に戻る:ありオブジェクト配列のFloatからfloat変数へのキャストはどうですか?

ArrayList<Object> row; 
     row = db.getNameAsArray(name); 

     mCurrentPrice=((Float)row.get(2)).floatValue(); 

if (!cursor.isAfterLast()) 
     { 
      do 
      { 
       .... 
       rowArray.add(cursor.getFloat(2)); 
       .... 
      } 
      while (cursor.moveToNext()); 
     } 

問題は、私は、リストからfloat型の変数を設定しようとするフロートキャスト、で発生しましたエラーはありませんが、この行にアプリFCがあります。シンプルなフロートキャストはどちらも動作しません。任意の回答の場合は Thxです。

Logcat:

02-07 22:34:19.537: ERROR/Retrieve Error(632): java.lang.ClassCastException: java.lang.String 

2月7日22:34:21.217:(632)/ System.errのに警告:にjava.lang.ClassCastException:java.lang.Stringで 2月7日22時34分: 21.267:WARN/System.err(632):com.testing.retrieveDrinkName(DatabaseActivity.java:222) 02-07 22:34:21.527:WARN/System.err(632):android.os.Handler。 handleCallback(Handler.java:587) 02-07 22:34:21.547:WARN/System.err(632):android.os.Handler.dispatchMessage(Handler.java:92) 02-07 22:34: 21.596:WARN/System.err(632):android.os.Looper.loop(Looper.java:123) 02-07 22:34:21.657: WARN/System.err(632):android.app.ActivityThread.main(ActivityThread.java:4363) 02-07 22:34:21.667:WARN/System.err(632):java.lang.reflect。 Method.invokeNative(ネイティブメソッド) 02-07 22:34:21.737:WARN/System.err(632):java.lang.reflect.Method.invoke(Method.java:521) 02-07 22:34 :21.769:WARN/System.err(632):com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:860) 02-07 22:34:21.797:WARN/System.err(632) ):com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 02-07 22:34:21.817:WARN/System.err(632):at dalvik.system.NativeStart.main(ネイティブ方法)

+1

利用FCの原因となるエラーを見てlogcat。 logcatを表示するには、EclipseでDDMSパースペクティブに切り替えるか、コマンドラインでadb logcatを実行します。 –

+0

したがって、 "getNameAsArray"という名前のメソッドはfloat値を返しますか?どうして? –

+0

メソッド戻り値Doubles、Strings、およびFloatsの値の配列。 – Hruskozrout

答えて

3

最後のコメントが示すとおり、Stringをにキャストしようとしています210。あなたのコードは、あなたが解決しようとしているまさに問題、それを明確にしませんが、あなたはString値を持っているとfloatをご希望の場合は、あなたが行うことができます:

mCurrentPrice = Float.parseFloat(stringValue); 
+0

@Hruskozroutはい、stacktraceはClassCastExceptionであることを示します。キャストしてStringをfloatにすることはできません.dave.cが説明するようにparseメソッドを使用する必要があります。 –

+0

dave.cとMayra、dave.cメソッドを使用してくれてありがとう、私はrowArray.add(cursor.getFloat(2));そのフロートは、すべての行が文字列値で表されているように見えます。私のコードをもう一度見直す必要があります。御時間ありがとうございます。 – Hruskozrout

+0

は、この回答がどのように改善されると感じるかを説明するためにダウンボッターケアをしますか? –

関連する問題