2

現在、Androidアプリでグラフをプロットするためにafreechartを使用しています。サンプルアプリで例示したTimeSeriesグラフを使用しています。私の場合、2つのデータベースから抽出されるデータ。2つの質問:1。2つのデータベースの値を使用してこの時系列グラフをプロットするにはどうすればよいですか。2.グラフ全体が思ったほど滑らかではありません。特にスクロールやフリックの場合。したがって、アプリのデザインと矛盾しています。どうすればスムーズにできますか?

上記の質問が不要または何らかの理由で間違っていると思われる場合は、フリーチャートを使用していなくても、複数のデータベース値を使用してグラフをプロットできる方法を教えてください。ありがとう。

createDataset()で次のような単純な'for'ループを使用してみました。

private static XYDataset createDataset() {

 mfirstDbHelper.open();
     msecondDbHelper.open();

     int firstdb_count = (int) DatabaseUtils.queryNumEntries(mfirstDbHelper.mDb,firstDbAdapter.DATABASE_TABLE);
     int seconddb_count = (int) DatabaseUtils.queryNumEntries(msecondDbHelper.mDb,secondDbAdapter.DATABASE_TABLE);

     TimeSeriesCollection dataset = new TimeSeriesCollection();

     for(int i=1;i<=seconddb_count;i++){
         Cursor seconddb = msecondDbHelper.fetchItem(i);

         TimeSeries s1 = new TimeSeries(seconddb.getString(
                seconddb.getColumnIndexOrThrow(secondDbAdapter.KEY_ITEMNAME)));

            for(int j=1;j<=firstdb_count;j++){
                    Cursor firstdb = mfirstDbHelper.fetchItem(j);
                    int first_sp_id = Integer.parseInt(firstdb.getString(
        firstdb.getColumnIndexOrThrow(firstDbAdapter.KEY_ID)));

                    if(first_sp_id == i){

                        int value = Integer.parseInt(firstdb.getString(
                                    firstdb.getColumnIndexOrThrow(firstDbAdapter.KEY_VALUE)));
                        String date = firstdb.getString(
                                    firstdb.getColumnIndexOrThrow(firstDbAdapter.KEY_DATE));


                String dateParts[] = date.split("-");
                String day = dateParts[0];
                String month = dateParts[1];
                String year = dateParts[2];
                int d = Integer.parseInt(day);
                int m = Integer.parseInt(month);
                int y = Integer.parseInt(year);


                        s1.add(new Day(d,m,y), value);
                        dataset.addSeries(s1);
                    }
                    firstdb.close();
                }
        seconddb.close();
        }

     mfirstDbHelper.close();
     msecondDbHelper.close();



     return dataset;

}
}

サンプルのMonth()をDay()に変更し、その領域にエラーがないことを確認しました。エラーが発生しています:

ERROR/AndroidRuntime(706): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.kev/com.kev.MyProject}: java.lang.NullPointerException  

また、明らかに、このコードはグラフ「s1」を何度も再描画します。この問題とエラーを克服する方法がわかりません。プログラミング、特にAndroidアプリの開発はまだかなり新しいので、上記の失敗があれば、遠慮なく頭を悩ませてコードを修正してください。

もう1つ、startManagingCursor()はDemoViewであり、Activityではないため、使用できません。だから、それが問題を引き起こしているかどうかもわかりません。

Afreechart TimeSeriesサンプル: http ://code.google.com/p/afreechart/source/browse/#svn%2Ftrunk%2Fafreechart_sample%2Fsrc%2Forg%2Fafree%2Fchart%2Fdemo

Afreechart TimeSeriesサンプル-表示: http ://code.google.com/p/afreechart/source/browse/trunk/afreechart_sample/src/org/afree/chart/demo/view/TimeSeriesChartDemo01View.java

お時間をいただき、ありがとうございました。:)

4

0 に答える 0