2010-12-02 22 views
4

JS Chartsライブラリを使用して、AndroidアプリケーションのWebViewにグラフを描画しています。私はSQLiteデータベースからデータを提供したいと思います。この時点で、私はJavaからJavaScriptへのデータの配列を渡す方法について固執しています。 JavaScriptの部分はそのような何かを期待:WebViewのAndroidアクティビティからJavaScriptへの値の配列の受け渡し

data = new Array([10, 10], [20, 10]); 

私がaddJavaScriptInterfaceについて知っていると私はWebViewのに私の活動から単一の値を渡すことができました。それは私にトラブルを与えるアレイだけです。今の私は、データをハードコーディングするんだけど、最終的には、これはデータベースから引き出されること

final class ChartDataLoader { 

    public double[][] getData() { 
     double[][] data = {{10, 10}, {20, 10}}; 
     return data; 
    } 
} 

注:私はそのようなことを考えました。それでは、私は私のJSにこれを公開:

webView.addJavascriptInterface(new ChartDataLoader(), "dataLoader"); 

そして最後には、JavaScriptでそれを読み取ろう:

ERROR/Web Console(2455): Uncaught TypeError: Cannot read property 'length' of undefined at file:///android_asset/chart.html:15

任意のヒントを:

<html> 
<head> 
<script type="text/javascript" src="jscharts.js"></script> 
</head> 

<body> 
<div id="chartcontainer">You should see a chart here.</div> 

<script type="text/javascript"> 

myData = dataLoader.getData(); 
alert("DataReceived: " + myData.length); 
alert("Element 0 : " + myData[0]); 

var myChart = new JSChart('chartcontainer', 'line'); 
myChart.setDataArray(myData); 
myChart.draw(); 

</script> 
</body> 
</html> 

JavaScriptが述べそれら二つの警告文に失敗します?他の人が配列をStringに変換し、JavaScriptでそれを作り直すコードをオンラインで見たことがありますが、それは私にとって過酷なもののように思えます。別の方法として、XMLファイルをグラフライブラリに渡すことですが、グラフを表示するたびに新しいXMLを作成するのが遅くなると思いました。

+0

まあ、はい...私はあなたが文字列を解析し、JSで配列を再作成する必要があると思います。しかし、私は見ていない、なぜそれはそのような問題だろうか? – LambergaR

答えて

0

最新のエラーを修正するには、myDataをvarとして定義する必要があります。

質問の最後に(配列を文字列に変換する)JSONです。コンテキストスイッチは高価です(AndroidからWebなど)。シリアライゼーション/デシリアライゼーションはおそらくあなたを遅くしません。

5

Remove the line: alert("DataReceived: " + myData.length);

関連する問題