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