レーティングの値がWebサービスからフェッチされるAndroidのレーティングバーに取り組んでいます。私が取得しているデータは、このようなxmlの形式です。
5.0
フェッチするとき、私はxmlを解析し、Stringのすべての値を取得しています。現在、評価のためにStringの値をFloatに変換していますが、その時点でNumberFormatExceptionが発生しています。理由はわかりません。他のデータをStringからDoubleに解析しましたが、その時点ではエラーは発生しませんでしたが、StringからFloatに変換しようとすると、なぜ例外がスローされるのかわかりません...
これが私のサンプルコードです。
ArrayList<HashMap<String, Object>> mylist = new ArrayList<HashMap<String, Object>>();
try {
//Get the xml string from the server
xml = XMLFunctions.getXML(url);
doc = XMLFunctions.XMLfromString(xml);
nodes = doc.getElementsByTagName("result");
for (int i = 0; i < nodes.getLength(); i++) {
HashMap<String, Object> map = new HashMap<String, Object>();
Element e = (Element)nodes.item(i);
map.put(Constants.NAME, XMLFunctions.getValue(e, "name"));
System.out.println("Rating = " + XMLFunctions.getValue(e, "rating"));
map.put(Constants.RATING, (Float.parseFloat(XMLFunctions.getValue(e, "rating"))));
mylist.add(map);
}
別の試み:-
String ratingValue = XMLFunctions.getValue(e, "rating");
System.out.println(ratingValue);// it gives me 5.0
float myRating = 0.0f;
myRating = Float.parseFloat(ratingValue); // getting exception here
System.out.println("Rating = **" + myRating + "**");//it gives me Rating = **5.0**
エラーログ:-
04-01 08:44:59.986: I/System.out(382): Rating = 5.0
04-01 08:45:00.056: W/System.err(382): java.lang.NumberFormatException:
04-01 08:45:00.056: W/System.err(382): at org.apache.harmony.luni.util.FloatingPointParser.parseFloat(FloatingPointParser.java:305)
04-01 08:45:00.065: W/System.err(382): at java.lang.Float.parseFloat(Float.java:323)
04-01 08:45:00.065: W/System.err(382): at place.locator.PlaceLocatorActivity$ParseXMLData.doInBackground(PlaceLocatorActivity.java:173)
04-01 08:45:00.065: W/System.err(382): at place.locator.PlaceLocatorActivity$ParseXMLData.doInBackground(PlaceLocatorActivity.java:1)
04-01 08:45:00.065: W/System.err(382): at android.os.AsyncTask$2.call(AsyncTask.java:185)
04-01 08:45:00.065: W/System.err(382): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
04-01 08:45:00.065: W/System.err(382): at java.util.concurrent.FutureTask.run(FutureTask.java:138)
04-01 08:45:00.065: W/System.err(382): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
04-01 08:45:00.065: W/System.err(382): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
04-01 08:45:00.065: W/System.err(382): at java.lang.Thread.run(Thread.java:1019)
どこを間違えているのかわかりません。誰かがそれを見つけることができるならば、親切に私に知らせてください。私はそれがいくつかの愚かな間違いであるに違いないことを知っていますが、それを見つけることができない方法もあります。
ありがとう