0
votes

This is my first android project and right now I make a bar chart with raw data. Now, I have a SQLite databse which stores the 2 things: ID and a number.

I want to add this data into the barchart instead of the raw data. I used the code from [this example][1] I found here on Stackoverflow. For adding the data to the graph, I get a nullPointerExeption for dbHandler.queryYData().

I added the public arraylists queryYData and queryXData to the MyDBHandler class, which handles the database, and changed the x value to my ID and the y value to the number and I changes the

Cursor cursor = mSQLiteDatabase.rawQuery(query, null)

See below:

public ArrayList<Float> queryYData(){
    ArrayList<Float> yNewData = new ArrayList<Float>();
    SQLiteDatabase db = getWritableDatabase();
    String query = "SELECT " + COLUMN_VALUE + " FROM " + TABLE_NAME;
    Cursor cursor = db.rawQuery(query, null);

    while (cursor.moveToNext()) { //loops through database
        if (cursor.getString(cursor.getColumnIndex("value")) != null) {
            yNewData.add(cursor.getFloat(cursor.getColumnIndex(COLUMN_VALUE)));
        }
    }

    cursor.close();
    return yNewData;
}

I added the void addData to my activity and called it in onCreate.

private void addData(){
        ArrayList<BarEntry> yVals = new ArrayList<BarEntry>();

        for (int i = 0; i < dbHandler.queryYData().size(); i++)
            yVals.add(new BarEntry(dbHandler.queryYData().get(i), i));

        ArrayList<String> xVals = new ArrayList<String>();
        for(int i = 0; i < dbHandler.queryXData().size(); i++)
            xVals.add(dbHandler.queryXData().get(i));

        BarDataSet dataSet = new BarDataSet(yVals, "Pijnschaal");
        BarData data = new BarData(xVals, dataSet);

        barChart.setData(data);
    }

logcat:

    E/AndroidRuntime: FATAL EXCEPTION: main
 Process: com.example.shanna.linechartgenerator, PID: 357
 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.shanna.linechartgenerator/com.example.shanna.linechartgenerator.dataStorage}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.util.ArrayList com.example.shanna.linechartgenerator.MyDBHandler.queryYData()' on a null object reference
 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2305)
 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2365)
 at android.app.ActivityThread.access$800(ActivityThread.java:148)
 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283)
 at android.os.Handler.dispatchMessage(Handler.java:102)
 at android.os.Looper.loop(Looper.java:135)
 at android.app.ActivityThread.main(ActivityThread.java:5272)
 at java.lang.reflect.Method.invoke(Native Method)
 at java.lang.reflect.Method.invoke(Method.java:372)
 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:909)
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:704)
            Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.util.ArrayList com.example.shanna.linechartgenerator.MyDBHandler.queryYData()' on a null object reference
 at com.example.shanna.linechartgenerator.dataStorage.addData(dataStorage.java:121)
 at com.example.shanna.linechartgenerator.dataStorage.onCreate(dataStorage.java:38)
 at android.app.Activity.performCreate(Activity.java:5977)
 at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2258)
 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2365) 
 at android.app.ActivityThread.access$800(ActivityThread.java:148) 
 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283) 
 at android.os.Handler.dispatchMessage(Handler.java:102) 
 at android.os.Looper.loop(Looper.java:135) 
 at android.app.ActivityThread.main(ActivityThread.java:5272) 
 at java.lang.reflect.Method.invoke(Native Method) 
 at java.lang.reflect.Method.invoke(Method.java:372) 
 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:909) 
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:704
1

1 Answers

0
votes

You can get values like:

for (cursor.moveToFirst(); !cursor.isAfterLast();cursor.moveToNext()){
    String val = cursor.getString("give your columid")
}

You will have your values in val variable.