2012-12-12 99 views
0

嗨,我是新來的android和我寫了下面的代碼來繪製折線圖。我正在使用數據庫將值傳遞給圖但該圖不是繪圖。條形圖從數據庫

你還可以告訴我如何更改下面的代碼來繪製條形圖。

import org.achartengine.ChartFactory; 
import org.achartengine.chart.PointStyle; 
import org.achartengine.model.TimeSeries; 
import org.achartengine.model.XYMultipleSeriesDataset; 
import org.achartengine.renderer.XYMultipleSeriesRenderer; 
import org.achartengine.renderer.XYSeriesRenderer; 

import android.app.Activity; 
import android.content.ContentValues; 
import android.content.Context; 
import android.content.Intent; 
import android.database.Cursor; 
import android.database.DatabaseErrorHandler; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteDatabase.CursorFactory; 
import android.database.sqlite.SQLiteOpenHelper; 
import android.graphics.Color; 
public class ChartActivity<BMICalculatorDB> extends Activity{ 

    public ChartActivity() { 
     super(); 
    } 
     public ChartActivity(Context context, String name, CursorFactory factory, 
      int version, DatabaseErrorHandler errorHandler) { 
     super(); 
     // TODO Auto-generated constructor stub 
    } 


     public static final String KEY_BMIID = "bmi_id"; 
     public static final String KEY_BMIDATA = "bmi_data"; 
     public static final String KEY_BMIDATE = "bmi_date"; 

     private static final String DATABASE_NAME = "Jayant"; 
     private static final String DATABASE_TABLE = "android_metadata"; 
     private static final int DATABASE_VERSION = 2; 

     private DBHelper ourHelper; 
     private static Context ourContext; 
     private SQLiteDatabase ourDatabase; 

     private static class DBHelper extends SQLiteOpenHelper{ 

      public DBHelper(Context context) { 
       super(context, DATABASE_NAME, null, DATABASE_VERSION); 
       // TODO Auto-generated constructor stub 
      } 

      @Override 
      public void onCreate(SQLiteDatabase db) { 
       // TODO Auto-generated method stub 
       db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" + 
       KEY_BMIID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
         KEY_BMIDATA + " TEXT NOT NULL, " + 
         KEY_BMIDATE + " TEXT NOT NULL);" 
         ); 
      } 

      @Override 
      public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
       // TODO Auto-generated method stub 
       db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE); 
       onCreate(db); 
      } 

     } 

     public void BMICalculatorDB(Context c){ 
      ourContext = c; 
     } 

     @SuppressWarnings("unchecked") 
     public BMICalculatorDB open(){ 
      ourHelper = new DBHelper(ourContext); 
      ourDatabase = ourHelper.getWritableDatabase(); 
      return (BMICalculatorDB) this; 
     } 

     public void close(){ 
      ourHelper.close(); 
     } 

     public long createEntry(String data, String date) { 
      //, String date 
      // TODO Auto-generated method stub 
      ContentValues cv = new ContentValues(); 
      cv.put(KEY_BMIDATA, data); 
      cv.put(KEY_BMIDATE, date); 
      return ourDatabase.insert(DATABASE_TABLE, null, cv); 
     } 

     public String getBMIID() { 
      // TODO Auto-generated method stub 
      String[] column = 
        new String[]{ KEY_BMIID }; 
      Cursor c = 
        ourDatabase.query(DATABASE_TABLE, column, null, null, null, null, null); 

      String result = ""; 
      int iID = c.getColumnIndex(KEY_BMIID); 

      for (c.moveToFirst(); ! c.isAfterLast(); c.moveToNext()){ 
       result = result + c.getString(iID); 
      } 

      return result; 
     } 

     public String getBMIDataData(){ 

      String[] column = 
         new String[]{ KEY_BMIDATA }; 
       Cursor c = 
         ourDatabase.query(DATABASE_TABLE, column, null, null, null, null, null); 

       String result = ""; 
       int iData = c.getColumnIndex(KEY_BMIDATA); 

       for (c.moveToFirst(); ! c.isAfterLast(); c.moveToNext()){ 
        result = result + c.getString(iData); 
       } 


      return result; 
     } 

     public String getBMIDateData(){ 
      String[] column = 
        new String[]{ KEY_BMIDATE }; 
      Cursor c = 
        ourDatabase.query(DATABASE_TABLE, column, null, null, null, null, null); 

      String result = ""; 
      int iDate = c.getColumnIndex(KEY_BMIDATE); 

      for (c.moveToFirst(); ! c.isAfterLast(); c.moveToNext()){ 
       result = result + c.getString(iDate); 
      } 


     return result; 
     } 

     public void updateEntry(long lId, String mData, String mDate) { 
      // TODO Auto-generated method stub 
      ContentValues cvUpdate = new ContentValues(); 

      cvUpdate.put(KEY_BMIDATA, mData); 
      cvUpdate.put(KEY_BMIDATE, mDate); 
      ourDatabase.update(DATABASE_TABLE, cvUpdate, KEY_BMIID + " = lId", null); 
     } 

     public String getData(long l) { 
      // TODO Auto-generated method stub 
      return null; 
     } 

     public String getDate(long l) { 
      // TODO Auto-generated method stub 
      return null; 
     } 

     public XYMultipleSeriesDataset getDemoDataset(String title) { 

      String[] column = 
        new String[]{ KEY_BMIDATA }; 
      Cursor c = ourHelper.getWritableDatabase().query(DATABASE_TABLE, column, null, null, null, null, null); 

      XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset(); 

      TimeSeries series = new TimeSeries("Bar1"); 
      TimeSeries series2 = new TimeSeries(title); 

      getBMIDataData(); 

      while (!c.isAfterLast()) { 
       int date = c.getInt((Integer) c.getColumnIndexOrThrow("DAYS")); 
       int weight = c.getInt((Integer) c.getColumnIndexOrThrow("TOP 10")); 
       series2.add(weight, date); 
       c.moveToNext(); 
      } 

      c.close(); 

      dataset.addSeries(series); 
      dataset.addSeries(series2); 

      return dataset; 
     } 


     public Intent getIntent(Context context) { 

      //Lager TimeSeries for den første linja 
      XYMultipleSeriesDataset dataset = getDemoDataset("Bar1"); 

      //Kode for render 
      XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer(); 

      //Optimalisering linje1 
      XYSeriesRenderer renderer = new XYSeriesRenderer(); 
      renderer.setColor(Color.YELLOW); 
      renderer.setPointStyle(PointStyle.CIRCLE); 
      renderer.setFillPoints(true); 

      // Optimalisering linje2 husk rekke følgen 
      XYSeriesRenderer renderer2 = new XYSeriesRenderer(); 
      renderer2.setColor(Color.BLUE); 
      renderer2.setPointStyle(PointStyle.SQUARE); 
      renderer2.setFillPoints(true); 

      //Legger til render seriene 
      mRenderer.addSeriesRenderer(renderer); 

      //Optimalisering grafen 
      mRenderer.setChartTitle("Test"); 
      mRenderer.setZoomEnabled(true); 
      mRenderer.setZoomButtonsVisible(true); 
      mRenderer.setBackgroundColor(Color.BLACK); 
      mRenderer.setApplyBackgroundColor(true); 
      mRenderer.setXTitle("Dager"); 
      mRenderer.setShowGrid(true); 

      mRenderer.addSeriesRenderer(renderer2); 


      Intent intent = ChartFactory.getLineChartIntent(context, dataset, 
        mRenderer, "Bar Graph Title"); 

      return intent; 

     } 

     public void onCreate(SQLiteDatabase db) { 
      // TODO Auto-generated method stub 

     } 

     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
      // TODO Auto-generated method stub 

     } 
    } 

回答

1

剛剛從裏面

public ChartActivity() { 
    super(); 
} 

它應該添加一個空的構造函數和調用super()。問題是這裏:

Caused by: java.lang.InstantiationException: can't instantiate class flu.solutions.travelsense.ChartActivity; no empty constructor 
+1

它沒有工作@arcastro – user1844638

+2

你有沒有得到同樣的錯誤? –

+1

沒有得到一個錯誤,但應用程序自己關閉了 – user1844638